Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 - Fatal编程技术网

Python 使用argparse传递字符串

Python 使用argparse传递字符串,python,Python,我一直在阅读文档和教程,但有一件事我不太明白 import argparse parser = argparse.ArgumentParser() parser.add_argument("test string", type=str, help="this is a string") args = parser.parse_args() print args 当我运行$python prog.py'test'时,结果是: 名称空间(测试字符串='test') 如何让它只打印测试 也许你想要这

我一直在阅读文档和教程,但有一件事我不太明白

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("test string", type=str, help="this is a string")
args = parser.parse_args()
print args
当我运行
$python prog.py'test'
时,结果是:

名称空间(测试字符串='test')


如何让它只打印
测试

也许你想要这样的东西:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("teststring", type=str, help="this is a string")
args = parser.parse_args()
print args.teststring
print var(args)["test string"]

也许你想要这样的东西:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("teststring", type=str, help="this is a string")
args = parser.parse_args()
print args.teststring
print var(args)["test string"]

使用带有空格的名称是非常不寻常的,因为这样很难恢复值

文档中对从
parse_args
返回的对象作了如下说明:

这个类非常简单,只是一个具有可读字符串表示的对象子类。如果您喜欢使用类似dict的属性视图,那么可以使用标准的Python习惯用法vars()

因此,要将args视为字典,可以执行以下操作:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("teststring", type=str, help="this is a string")
args = parser.parse_args()
print args.teststring
print var(args)["test string"]
您也可以这样做:

print getattr(args, "test string")
请注意,如果您的选项中没有空格(例如:“teststring”),则可以直接访问该属性:

print args.teststring

使用带有空格的名称是非常不寻常的,因为这样很难恢复值

文档中对从
parse_args
返回的对象作了如下说明:

这个类非常简单,只是一个具有可读字符串表示的对象子类。如果您喜欢使用类似dict的属性视图,那么可以使用标准的Python习惯用法vars()

因此,要将args视为字典,可以执行以下操作:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("teststring", type=str, help="this is a string")
args = parser.parse_args()
print args.teststring
print var(args)["test string"]
您也可以这样做:

print getattr(args, "test string")
请注意,如果您的选项中没有空格(例如:“teststring”),则可以直接访问该属性:

print args.teststring

我不理解你的代码中的所有内容,但是在你的论点名称中留一个空格似乎是个坏主意。如果我使用以下代码:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("test_string", type=str, help="this is a string")
args = parser.parse_args()
print args.test_string
然后

给我你想要的


当您为参数创建“测试字符串”名称时,不清楚(至少对我来说)如何使用“点”符号访问其值。

我不了解代码中的所有内容,但在参数名称中留一个空格似乎是个坏主意。如果我使用以下代码:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("test_string", type=str, help="this is a string")
args = parser.parse_args()
print args.test_string
然后

给我你想要的


当您为参数创建“test string”名称时,您不清楚(至少对我来说)如何使用“dot”符号访问其值。

您所说的“just
test
”是什么意思?与什么相反,确切地说?它被认为是一个名称空间对象,而不是一个字符串。我仍然不确定你在追求什么。您有一个名称空间,该名称空间具有一个名为“test string”(可能会在那里保留有效标识符…)且值为“test”的属性。这正是你想要的。你到底期望什么?啊,所以我想把这个字符串传递给另一个函数。作为一个示例用例,连接一个字符串,但我得到一个错误
TypeError:无法连接'str'和'Namespace'对象
,因此要传递
args.get('test string')
(同样,如果使用有效的标识符,这会更容易)。你说的“just
test
”是什么意思?与什么相反,确切地说?它被认为是一个名称空间对象,而不是一个字符串。我仍然不确定你在追求什么。您有一个名称空间,该名称空间具有一个名为“test string”(可能会在那里保留有效标识符…)且值为“test”的属性。这正是你想要的。你到底期望什么?啊,所以我想把这个字符串传递给另一个函数。作为一个示例用例,连接一个字符串,但我得到一个错误
TypeError:无法连接'str'和'Namespace'对象
,因此传递
args.get('test string')
(同样,如果使用有效的标识符,这将更容易)。谢谢!这就是我要找的!非常感谢。这就是我要找的!