int*_*tar 305 python command-line-arguments argparse
如何在命令行参数中添加可选标志?
例如.所以我可以写
python myprog.py
Run Code Online (Sandbox Code Playgroud)
要么
python myprog.py -w
Run Code Online (Sandbox Code Playgroud)
我试过了
parser.add_argument('-w')
Run Code Online (Sandbox Code Playgroud)
但我只是收到一条错误消息
Usage [-w W]
error: argument -w: expected one argument
Run Code Online (Sandbox Code Playgroud)
我认为它意味着它需要-w选项的参数值.接受国旗的方式是什么?
我在这个问题上发现http://docs.python.org/library/argparse.html相当不透明.
Jdo*_*dog 478
正如你所拥有的那样,参数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')
Run Code Online (Sandbox Code Playgroud)
编辑:正如斯文所指出的,在这种情况下,默认值是多余的.
use*_*754 40
添加快速代码段以准备执行:
资料来源: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
Run Code Online (Sandbox Code Playgroud)
用法:
python myparser.py -w
>> True
Run Code Online (Sandbox Code Playgroud)
小智 6
你的剧本是对的。但默认情况下是 None 类型。所以它认为除了 None 之外的任何其他值都被分配给 args.argument_name 变量。
我建议您添加一个 action="store_true"。这将使 True/False 类型的标志。如果使用它的 True else False。
import argparse
parser = argparse.ArgumentParser('parser-name')
parser.add_argument("-f","--flag",action="store_true",help="just a flag argument")
Run Code Online (Sandbox Code Playgroud)
用法
$ python3 script.py -f
Run Code Online (Sandbox Code Playgroud)
在用 args.f 检查时解析后,它返回 true,
args = parser.parse_args()
print(args.f)
Run Code Online (Sandbox Code Playgroud)
>>>true
Run Code Online (Sandbox Code Playgroud)