python3中的argparse - 无法在名称中添加参数?

时间:2015-07-10 20:02:54

标签: python python-3.x

这是我的示例程序:

   #!/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”尝试相同的示例,它可以正常工作。

对我来说,在我的论证名称中使用 - 很重要。

如何解决此问题?

由于

2 个答案:

答案 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'))