不带参数的Python argparse命令行标志
如何向命令行参数添加可选标志 这样我就可以写作了不带参数的Python argparse命令行标志,python,command-line-arguments,argparse,Python,Command Line Arguments,Argparse,如何向命令行参数添加可选标志 这样我就可以写作了 python myprog.py 或 我试过了 parser.add_argument('-w') 但我刚收到一条错误消息,说 Usage [-w W] error: argument -w: expected one argument 我认为这意味着它需要一个-w选项的参数值。接受国旗的方式是什么 我发现这个问题相当模糊。正如您所看到的,参数w在命令行上的-w之后需要一个值。如果您只是想通过设置变量True或False来翻转开关,请看一
python myprog.py
或
我试过了
parser.add_argument('-w')
但我刚收到一条错误消息,说
Usage [-w W]
error: argument -w: expected one argument
我认为这意味着它需要一个-w选项的参数值。接受国旗的方式是什么
我发现这个问题相当模糊。正如您所看到的,参数
w
在命令行上的-w
之后需要一个值。如果您只是想通过设置变量True
或False
来翻转开关,请看一看(特别是store\u True和store\u False)
其中action='store\u true'
表示default=False
相反,您可以使用
action='store\u false'
,这意味着default=True
添加一个快速代码段以准备执行:
来源:myparser.py
用法:
python myparser.py -w
>> True
这里有一个快速的方法,除了
sys
,它不需要任何东西。。尽管功能有限:
sys.argv[1://中的flag=“--flag”
[1::
如果完整文件名为--flag
则脚本是正确的。但默认情况下,它不属于任何类型。因此,它认为除了None之外的任何其他值都是真的,因为args.ARGMENT_name变量被赋值
我建议您添加一个action=“store\u true”。这将使标志的类型为真/假。如果使用它,则为真,否则为假
import argparse
parser=argparse.ArgumentParser('parser-name')
parser.add_参数(“-f”,“--flag”,action=“store_true”,help=“just a flag参数”)
用法
$python3 script.py-f
解析后,如果使用args.f进行检查,则返回true
args=parser.parse_args()
打印(参数f)
如果您只想在脚本中添加一个标志,那么sys.argv会简单得多。除非你特别想学习argparse,这是一个很好的方法,因为它是一个方便的模块。即使我现在知道了答案,我也不知道如何从文档中理解它。@Jdog,知道为什么这对我不起作用吗?w
总是False
。只是简单地登录来表示从长远来看这是一个多么糟糕的想法。假设您首先检查字符串“-flag”是否在sys.argv中。然后查看sys.argv[-1]的末尾以查看要打开的文件。突然之间,您会遇到这样一种情况:如果您试图打开一个名为--flag
的文件,那么它的行为会出人意料,更糟糕的是,当不受信任的数据最终被传递到argv时,这往往会成为一个安全缺陷。最后,这种方法不应该被采用。真正的arg解析器要健壮得多……正如前面提到的,这个解决方案根本不健壮,但是如果您需要超快速地完成这项工作(例如用于测试目的),它就可以工作。一定要让它远离生产代码。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-w', action='store_true')
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
>>>true