2013-08-26 2 views
3

Как я могу ссылаться на один вариант от другого в argparse?Ссылка на другие варианты в argparse

Например, у меня есть программа, которая изменяет существующие файлы. Я хотел бы иметь необязательный аргумент, определяющий имя выходного файла, который по умолчанию будет таким же, как и вход (т. Е. Программа будет перезаписывать входной файл по умолчанию). Вот то, что я думал до сих пор:

parser.add_argument('input',) 
parser.add_argument('output', 
     default = sys.argv()[1], 
     nargs = '?', 
     ) 

Но это скорее kludgey и не кажется оптимальным решением.

ответ

2

Я бы просто установить значение output после parse_args(), например:

args = parser.parse_args() 
if args.output is None: 
    args.output = args.input 

Единственное преимущество (что я могу думать) для установки по умолчанию в пределах argparse является то, что он может быть использован в отображение справки. Но если пользователь запрашивает -h, он, вероятно, не дает аргумента input. ХЕЛП линия эффекта: «вывода по умолчанию такой же, как вход» будет лучше

Вы могли бы сделать обычай action для input, который устанавливает как args.input и args.output. Но это может быть сложно. И я не вижу никакого преимущества перед логикой parse_args.

Смежные вопросы