Я пишу скрипт python, он принимает либо 3 позиционных аргумента (имя, дата, местоположение, скажем), либо 1 аргумент, который является установочным файлом, который содержит эту информацию.скрипт python с 1 или 3 позиционными аргументами
Я знаю, что я могу использовать argparse
и я могу сделать позиционные аргументы необязательные с:
parser.add_argument('name_OR_setupFile')
parser.add_argument('date', nargs='?')
parser.add_argument('location', nargs='?')
, а затем я могу проверить ошибки, чтобы убедиться, что пользователь ничего глупого
не делатьПроблема в том, что теперь справочное сообщение будет очень запутанным, потому что неясно, что такое первый аргумент. Мне бы хотелось сделать это как две разные строки add_argument, так или иначе, но я не уверен, как это сделать.
Я также знаю, что могу использовать аргумент --setupFile
и сделать три необязательных ... но я бы тоже не сделал этого, если мне это не нужно.
Третий вариант заключается в использовании:
parser.add_argument('ARGS', nargs='+', help='ARGS is either of the form setupFile, or name date location')
, а затем проверка ошибок позже ...
ETA разъяснений:
Я хочу, чтобы иметь возможность вызывать сценарий с либо:
python foo.py setupFile
или
python foo.py name date location
Я хочу, чтобы текст справки быть что-то вроде:
usage:
foo.py setupFile
foo.py name date location
Можете ли вы быть более ясно, что вам нужно? вы можете передать справочное сообщение в вызове add_argument? –
FWIW, если я видел 'usage: foo.py [setupFile] [имя даты], моя интерпретация формата args была бы _completely_ отличной от того, что вы описываете. – NPE
@NPE: Хорошая точка. какой формат был бы разумным, как вы думаете? –