Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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 Can';我不知道如何将参数传递给argparse_Python_Command Line_Argparse_Spyder - Fatal编程技术网

Python Can';我不知道如何将参数传递给argparse

Python Can';我不知道如何将参数传递给argparse,python,command-line,argparse,spyder,Python,Command Line,Argparse,Spyder,我正在浏览argparse模块上的文档,但我不知道如何获得与文档中解释的相同的结果。您可以在命令行中指定参数,也可以在parse_args()中指定参数,这有助于测试。以下是一个例子: parser = argparse.ArgumentParser() parser.add_argument('--foo') parser.parse_args('--foo 1'.split()) 直接从此处的文档中获取: 它应该输出以下内容: Namespace(foo='1') 但我得到的是: Na

我正在浏览argparse模块上的文档,但我不知道如何获得与文档中解释的相同的结果。您可以在命令行中指定参数,也可以在parse_args()中指定参数,这有助于测试。以下是一个例子:

parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.parse_args('--foo 1'.split())
直接从此处的文档中获取:

它应该输出以下内容:

Namespace(foo='1')
但我得到的是:

Namespace(foo=None)
我还尝试了以下方法:

parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
parser.parse_args(['--foo', '--bar'])
其中一个输出:

Namespace(bar=True, baz=True, foo=False)
这就是它应该做的。谁能告诉我这里发生了什么事?以下是我的完整代码,用于为上面显示的两段代码生成输出:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.parse_args('--foo 1'.split())
args = parser.parse_args()
print(args)
#supposed to be Namespace(foo='1')

parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
parser.parse_args(['--foo', '--bar'])
args = parser.parse_args()
print(args)
#supposed to be Namespace(foo=True, bar=False, baz=True)
我不知道这是否有区别,但我在Spyder 3.1.4中这样做,并且运行Python 3.6.0

更新

由于文档中的一些模糊性,我不知道它们是如何从设置命令行参数到显示输出的。在@hpaulj的帮助下,我意识到我所做的只是显示相对于arg.sysv的输出,而不是指定的自定义命令行-oops!以下是更正后的代码:

parser = argparse.ArgumentParser()
parser.add_argument('--foo')
#added this assignment to args
args = parser.parse_args('--foo 1'.split())
#following line was wrong - removing
#args = parser.parse_args()
print(args)
#supposed to be Namespace(foo='1')

parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_true')
parser.add_argument('--bar', action='store_false')
parser.add_argument('--baz', action='store_false')
#added this assignment to args
args = parser.parse_args(['--foo', '--bar'])
#following line was wrong - removing
#args = parser.parse_args()
print(args)
#supposed to be Namespace(foo=True, bar=False, baz=True)

这会给你答案。您正在尝试再次解析,这就是为什么它给出了NoneUse
args=parser.parse_args(“…”.split)
args=parser.parse_args()
解析命令行,而不是测试用例。Ohhh。。。。。我明白你的意思-让我试试!哎呀。。所以我调用了parse_args(…),只是为了再次调用它。这很令人困惑,因为文档实际上并没有告诉您如何输出,它们只是告诉您名称空间的值。我将用更正的版本更新问题。谢谢文档示例显示了在交互式python会话中看到的内容。是的,@hpaulj在上面也这样说,我相应地更新了我的问题。谢谢或者你的答案是第一个?对不起,我错过了!
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
args = parser.parse_args('--foo 1'.split())
print(args)