Флаги командной строки 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 довольно непрозрачно на этом вопрос.

598   4  

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

    Ничего не найдено.