没有参数的Python argparse命令行标志

Python argparse command line flags without arguments

如何向命令行参数添加可选标志?

这样我就可以写信了

1
python myprog.py

1
python myprog.py -w

我试过

1
parser.add_argument('-w')

但我收到一条错误消息说

1
2
Usage [-w W]
error: argument -w: expected one argument

我认为这意味着它需要-w选项的参数值。接受国旗的方式是什么?

我发现在这个问题上http://docs.python.org/library/argparse.html相当不透明。


如您所知,参数w在命令行上的-w后面需要一个值。如果您只是想通过设置一个变量TrueFalse来翻转一个开关,请查看http://docs.python.org/dev/library/argparse.html action(特别是store_true和store_false)。

1
2
3
4
import argparse

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

编辑:正如Sven指出的,在这种情况下,默认值是多余的。


添加一个快速代码段以准备执行:

来源:myparser.py

1
2
3
4
5
6
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

用途:

1
2
python myparser.py -w
>> True


这是一种快速的方法,不需要除sys以外的任何东西。虽然功能有限:

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

如果完整文件名为--flag,则为[1:]