Как создать необязательный аргумент, который является псевдонимом другого аргумента с определенным значением? - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно отредактировать программу Python 3, назовем ее ./foo, которая использует argeparse для анализа списка аргументов.

В настоящее время эта программа позволяет указать необязательный входной файл в командной строке. Если он не указан, то foo читает файл setting.txt

$ ./foo 
$ ./foo --input my_settings.txt

Код, который делает это довольно просто:

parser.add_argument(
    '--input',
    default='settings.txt'
)

Намерение состояло в том, чтобы предоставить персонализированные настройки, но в На практике 99% людей, использующих аргумент --input, указывают один конкретный файл other_settings.txt. Я хотел бы добавить взаимоисключающий аргумент удобства, --common, который эквивалентен --input other_settings.txt

# These are the same.
$ ./foo --input other_settings.txt
$ $ ./foo --common

Каков рекомендуемый способ выполнения sh этого? Например, следует ли записывать оба аргумента в одно и то же значение dest? Могу ли я заставить их писать в отдельные места назначения, а затем добавить несколько logi c в тело кода, как это было сделано здесь ?

1 Ответ

0 голосов
/ 20 июня 2020

Вы можете легко выполнить sh это, проанализировав аргументы, а затем:

 if common is not None:
     input_file = "other_settings.txt"
...