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

时间:2011-11-24 14:57:16

标签: python command-line-arguments 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在这个问题上相当不透明。

4 个答案:

答案 0 :(得分:417)

正如你所知,参数w在命令行上期望-w之后的值。如果您只是想通过设置变量TrueFalse来切换开关,请查看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')

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

答案 1 :(得分:32)

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

来源: 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

答案 2 :(得分:3)

您的脚本是正确的。但是默认情况下为None类型。因此,它认为除args.argument_name变量以外的其他任何值都为true。

我建议您添加一个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

答案 3 :(得分:-5)

这是一种快速的方法,除sys之外不需要任何其他内容..但功能有限:

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

如果完整文件名为[1:]

,则

--flag