Флаги командной строки Python argparse без аргументов
как добавить дополнительный флаг в мои args командной строки?
например. так что я могу написать
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 довольно непрозрачно на этом вопрос.
4 ответов:
как у вас есть, аргумент w ожидает значение после-w в командной строке. Если вы просто хотите перевернуть переключатель, установив переменную
TrueилиFalse, взгляните на http://docs.python.org/dev/library/argparse.html#action (в частности store_true и store_false)parser.add_argument('-w', action='store_true')Edit: как указывает Свен, значение по умолчанию в этом случае является излишним.
добавление быстрого фрагмента, чтобы он был готов к выполнению:
Источник:myparser.py
import argparse parser = argparse.ArgumentParser(description="Flip a switch by setting a flag") parser.add_argument('-w', action='store_true') args = parser.parse_args() print args.wиспользование:
python myparser.py -w >> True
при добавлении аргумента в синтаксический анализатор флаг action = "store_true" устанавливает значение по умолчанию для аргумента True. Итак, парсер.add_argument ('- w', action = "store_true") должен решить эту ошибку.
вот быстрый способ сделать это, не требуется ничего, кроме
sys.. хотя функциональность ограничена:
flag = "--flag" in sys.argv[1:]
[1:]в случае если полное имя файла--flag
Comments