Argparse定义--in参数后无法通过点语法访问的问题
解决argparse中--in参数的访问问题
问题核心是in是Python的关键字(用于判断元素是否在序列/集合中,比如'a' in ['a','b']),Python不允许直接通过.运算符访问名为关键字的属性,所以args.in会触发SyntaxError。
有两种可行的解决方法:
方法一:使用getattr()函数访问
通过字符串形式指定属性名,避开关键字的语法限制:
import argparse parser = argparse.ArgumentParser() parser.add_argument('--in', default='../../in') parser.add_argument('--out', default='../../out') args = parser.parse_args() # 用getattr访问--in对应的属性 input_path = getattr(args, 'in') print(f"输入文件夹: {input_path}") print(f"输出文件夹: {args.out}")
方法二:定义参数时指定dest重命名属性
在add_argument中通过dest参数,把参数对应的属性名改成非关键字的名称(比如input_dir),之后直接用新名称访问即可,这是更推荐的写法,代码可读性更强:
import argparse parser = argparse.ArgumentParser() # 指定dest将--in映射为input_dir属性 parser.add_argument('--in', dest='input_dir', default='../../in', help='输入文件夹') parser.add_argument('--out', default='../../out', help='输出文件夹') args = parser.parse_args() # 直接访问重命名后的属性 print(f"输入文件夹: {args.input_dir}") print(f"输出文件夹: {args.out}")
内容的提问来源于stack exchange,提问作者frarugi87
相关产品推荐
相关产品推荐

