这是我的示例程序:
#!/usr/bin/python
import os
import string
import argparse
parser = argparse.ArgumentParser(description="get all versions")
parser.add_argument(test-version)
version = parser.parse_args()
print(version.test-version)
当我运行python脚本时,它会抛出错误:
AttributeError: 'Namespace' object has no attribute 'test'
如果我使用参数“test”而不是“test-version”尝试相同的示例,它可以正常工作。
对我来说,在我的论证名称中使用 - 很重要。
如何解决此问题?
由于
答案 0 :(得分:6)
问题在于,您不能在变量名称中使用-
,因为它是减法运算符。因此,在您的代码中,解释程序正在尝试执行version.test - version
,但由于version
没有.test
属性而无法工作,因此您无法执行此操作。从某事物中减去名称空间。如果您想在参数中使用-
,则需要在.add_argument()
中设置dest=
参数。
例如:
import argparse
parser = argparse.ArgumentParser(description="get all versions")
parser.add_argument('--test-version', dest='test_version')
version = parser.parse_args(['--test-version', '1'])
print(version.test_version)
或者如果您希望它作为状态标志:
import argparse
parser = argparse.ArgumentParser(description="get all versions")
parser.add_argument('--test-version', action='store_true', dest='test_version')
version = parser.parse_args(['--test-version'])
print(version.test_version)
答案 1 :(得分:1)
试试这个:
print(getattr(version, 'test-version'))