Как добавить необязательный флаг в мои аргументы командной строки?
например. так что я могу написать
python myprog.py
или
python myprog.py -w
Я попытался
parser.add_argument('-w')
Но я просто получаю сообщение об ошибке, говорящее
Usage [-w W]
error: argument -w: expected one argument
это означает, что для параметра -w требуется значение аргумента. Какой способ просто принять флаг?
Я считаю, что http://docs.python.org/library/argparse.html довольно непрозрачен в этом вопросе.
python
command-line-arguments
argparse
Interstar
источник
источник
Ответы:
Как вы понимаете, аргумент w ожидает значение после -w в командной строке. Если вы просто хотите переключиться, установив переменную
True
илиFalse
, взгляните на http://docs.python.org/dev/library/argparse.html#action (в частности store_true и store_false)где
action='store_true'
подразумеваетсяdefault=False
.И наоборот, вы могли бы иметь
action='store_false'
, что подразумеваетdefault=True
.источник
w
всегдаFalse
.Добавление быстрого фрагмента, чтобы он был готов к выполнению:
Источник: myparser.py
Использование:
источник
Вот быстрый способ сделать это, не требуя ничего кроме
sys
... хотя функциональность ограничена:flag = "--flag" in sys.argv[1:]
[1:]
в случае, если полное имя файла--flag
источник
--flag
попадаете в ситуацию, когда вы пытаетесь открыть файл с именем , тогда он будет вести себя неожиданно, и, что еще хуже, это то, что это часто оказывается недостатком безопасности в будущем, когда ненадежные данные оказываются перешел на аргв. В конце концов, этот метод просто не должен быть сделан. Реальные парсеры arg просто намного более устойчивы ...