Не трогайте аргументы с помощью argparse

Я хотел бы использовать argparse для анализа аргументов, которые он знает, а затем оставить остальные нетронутыми. Например, я хочу иметь возможность запустить

performance -o output other_script.py -a opt1 -b opt2

, который использует параметр -o , а остальное оставляет нетронутым.

Модуль profiler.py делает то же самое с optparse, но, поскольку я использую argparse, я делаю:

def parse_arguments():
    parser = new_argument_parser('show the performance of the given run script')
    parser.add_argument('-o', '--output', default='profiled.prof')

    return parser.parse_known_args()

def main():
    progname = sys.argv[1]
    ns, other_args = parse_arguments()
    sys.argv[:] = other_args

Что, похоже, тоже работает, но что произойдет, если у other_script.py также есть -o flag?

Есть ли вообще лучший способ решить эту проблему?

6
задан Chris 31 January 2012 в 17:36
поделиться