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 在这个问题上讲得有点模糊。
5 个回答
13
你的脚本是对的。但是默认情况下,它的类型是None。这意味着只要给args.argument_name这个变量赋了其他值,它就会被认为是“真”。
我建议你加上action="store_true"。这样就可以创建一个真/假类型的标志。如果使用了这个标志,它就是“真”,否则就是“假”。
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,它会返回“真”,
args = parser.parse_args()
print(args.f)
>>>true
81
这里有一个简单的代码片段,方便你直接执行:
来源: 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
840
你现在的代码中,参数 w
在命令行中需要在 -w
后面跟一个值。如果你只是想通过设置一个变量为 True
或 False
来切换某个功能,可以看看 这里(特别是 store_true
和 store_false
)。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-w', action='store_true')
其中 action='store_true'
表示默认值是 False
。
相反,你也可以使用 action='store_false'
,这时默认值就是 True
。