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