Python argparse флаги командной строки без аргументов - PullRequest
278 голосов
/ 24 ноября 2011

Как добавить необязательный флаг в мои аргументы командной строки?

например.так что я могу написать

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

Ответы [ 3 ]

435 голосов
/ 24 ноября 2011

Как вы понимаете, аргумент w ожидает значение после -w в командной строке.Если вы просто хотите переключить переключатель, установив переменную True или False, взгляните на http://docs.python.org/dev/library/argparse.html#action (в частности store_true и store_false)

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-w', action='store_true')

Редактировать: Как указывает Свен, значение по умолчанию в этом случае является излишним.

33 голосов
/ 19 апреля 2016

Добавление быстрого фрагмента, чтобы он был готов к выполнению:

Источник: 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
0 голосов
/ 03 мая 2016

Вот быстрый способ сделать это, не требуя ничего кроме sys .. хотя функциональность ограничена:

flag = "--flag" in sys.argv[1:]

[1:], если полное имя файла --flag

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...