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'
Run Code Online (Sandbox Code Playgroud)
显然,可以使用名称中的点来创建属性名称,但是如何访问这些属性名称呢?
编辑:我的目标是让 argparse 显示 inputfile.txt 名称(例如使用 --help),但调用属性“inputfile”。
尝试了一些建议后,完成此操作的最简单方法是使用元变量选项:
parser.add_argument("inputfile", metavar="inputfile.txt")
Run Code Online (Sandbox Code Playgroud)
在内部,argparse会将所有属性添加到Namespace()带有setattr. 因此,您可以使用以下方式访问这些值getattr:
getattr(args, 'inputfile.txt')
Run Code Online (Sandbox Code Playgroud)
然而,这并不直观,通常应避免带有点的属性名称。建议使用dest选项来argparse.add_argument定义自己的变量来存储该参数的值,正如 hd1 在他们的答案中建议的那样。
| 归档时间: |
|
| 查看次数: |
4875 次 |
| 最近记录: |