【发布时间】:2019-09-09 17:56:34
【问题描述】:
我想使用 argparse 模块通过命令行参数传递一个 txt 文件,并使用 open() 函数读取文件,但我遇到的第一件事是这个错误:
AttributeError: 'dict' object has no attribute 's'
这是我的代码
import argparse
parser = argparse.ArgumentParser(description="My program!", formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument("-s", type=argparse.FileType('r'), help="Filename/path to be passed")
args = vars(parser.parse_args())
subfile = (open(args.s, "r")).read()
【问题讨论】:
-
subfile = (open(args['s'], "r")).read()?如果args是dict,则不能像从对象args调用方法s那样做args.s。如果要获取字典中键的值,请改用语法dict[key]。 -
@MrFuppes 感谢您的帮助,但它给了我一个类型错误:TypeError: expected str, bytes or os.PathLike object, not NoneType
-
似乎您在没有指定文件名的情况下调用了脚本(参数 -s)。添加了一个答案来澄清。
-
你为什么用
args = vars(parser.parse_args())而不是args = parser.parse_args()? -
@wjandrea:我想如果不打电话给
vars(),args.s本来就可以工作
标签: python