python - 如何访问名称中带点的 python argparse 参数

标签 python argparse

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 会将所有属性添加到带有 setattrNamespace() 实例中.因此,您可以使用 getattr 访问这些值:

getattr(args, 'inputfile.txt')

但是,这并不直观,通常应避免使用带点的属性名称。建议使用 dest argparse.add_argument 的选项定义您自己的变量来存储该参数的值,正如 hd1 在他们的回答中所建议的那样。

关于python - 如何访问名称中带点的 python argparse 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259248/

相关文章:

argparse - 使用 argparse 只接受一组必需的参数

python - 在来自 ColumnDataSource 的图表上绘制多条线

python - 从文本文件解析为图形(python)

php - 如何在 Python 和 PHP 之间传输数据

c - 在 OSX 上安装 rng-tools 时出现 undefined symbol argp_parse 和 arpg_usage

python - 如何使用 'argparse' 指定两个必需参数(包括子命令)?

python - 像 np.outer() 这样的 Numpy 最小值

python - 部署 Orange 3 模型

python - 将 "-h"参数传递给子脚本

python - 使用 argparse 请求 0 或 2 个位置参数?