不带参数的Python argparse命令行标志

我如何添加一个可选的标志,我的命令行参数?

如。这样我就可以写

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在这个问题上相当不透明。

254726 次浏览

正如你所拥有的,参数w期望在命令行上的-w之后有一个值。如果你只是想通过设置变量TrueFalse来翻转开关,请查看在这里(特别是store_true和store_false)

import argparse


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

其中action='store_true'表示default=False

相反,你可以有__abc0,这意味着default=True

添加一个快速片段,让它准备好执行:

来源:< em > myparser.py < / em >

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

这里有一个快速的方法来做它,不需要任何东西,除了sys..尽管功能有限:

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

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

你的剧本是对的。但默认为None类型。所以它认为除None以外的任何其他值都为真。argument_name变量。

我建议你添加一个action="store_true"这将使True/False类型的标志。如果使用,则为True,否则为False。

import argparse
parser = argparse.ArgumentParser('parser-name')
parser.add_argument("-f","--flag",action="store_true",help="just a flag argument")

使用

$ python3 script.py -f

解析后,当检查args。F它返回true,

args = parser.parse_args()
print(args.f)
>>>true