Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带参数的Python argparse命令行标志_Python_Command Line Arguments_Argparse - Fatal编程技术网

不带参数的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