Skip to main content
 首页 » 编程设计

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

2025年05月04日14grandyang

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 在他们的回答中所建议的那样。