Python 的 argparse 允许我定义名称中包含一个点的参数名称。但是我怎样才能访问这些?
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("inputfile.txt")
parser.add_argument("outputfile.txt")
args = parser.parse_args(['hello', 'world'])
# now args is:
# Namespace(inputfile.txt='hello', outputfile.txt='world')
# and this does not work
print(args.inputfile.txt)
>>> AttributeError: 'Namespace' object has no attribute 'inputfile'
显然,属性名称可以在其名称中使用点来创建,但是如何访问这些名称?
编辑: 我的目标是让 argparse 显示 inputfile.txt 名称(例如使用 --help)但调用属性“inputfile”。
在尝试了一些建议之后,最简单的方法是使用 metavar 选项:
parser.add_argument("inputfile", metavar="inputfile.txt")
最佳答案
在内部,argparse
会将所有属性添加到带有 setattr
的 Namespace()
实例中.因此,您可以使用 getattr
访问这些值:
getattr(args, 'inputfile.txt')
但是,这并不直观,通常应避免使用带点的属性名称。建议使用 dest
argparse.add_argument
的选项定义您自己的变量来存储该参数的值,正如 hd1 在他们的回答中所建议的那样。
关于python - 如何访问名称中带点的 python argparse 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259248/