Python 3.x Python argparse打开多个文件
我试图用argparse访问多个.txt文件,但我遇到了一个无法解决的问题Python 3.x Python argparse打开多个文件,python-3.x,argparse,Python 3.x,Argparse,我试图用argparse访问多个.txt文件,但我遇到了一个无法解决的问题 parser = argparse.ArgumentParser() parser.add_argument('filename', nargs='+'. type=argparse.FileType('r')) args = parser.parse_args() with open(args.filename, 'r') as files: #do stuff to
parser = argparse.ArgumentParser()
parser.add_argument('filename', nargs='+'. type=argparse.FileType('r'))
args = parser.parse_args()
with open(args.filename, 'r') as files:
#do stuff to files
我正试着用
编辑:
但我得到了一个错误:
Traceback (most recent call last):
File "script.py", line 34 in <module>
with open(args.filename, 'r') as files:
TypeError: expected str, bytes or os.PathLike objects, not list
回溯(最近一次呼叫最后一次):
文件“script.py”,第34行
打开(args.filename,'r')作为文件:
TypeError:应为str、字节或os.PathLike对象,而不是列表
我知道这意味着什么,但我就是不知道下一步该怎么办 来自文档:
“+”。与“*”一样,所有存在的命令行参数都被收集到一个列表中。此外,如果没有至少一个命令行参数,将生成一条错误消息
所以,如果你想打开多个文件,你必须用args遍历你的列表。例如:
parser = argparse.ArgumentParser()
parser.add_argument('filename', nargs='+')
args = parser.parse_args()
for file_name in args.filename:
with open(file_name, 'r') as files:
<do your code here>
# a = files.read()
# print(a)
parser=argparse.ArgumentParser()
parser.add_参数('filename',nargs='+'))
args=parser.parse_args()
对于args.filename中的文件名:
打开(文件名为“r”)作为文件:
#a=文件。读取()
#印刷品(a)
args.filename的类型是什么?我怀疑你有一个字符串列表,而不仅仅是一个字符串。如果我正确理解了你的问题,我认为这是一个字符串。脚本使用一个文件,但如果将其用于多个文件,则会显示该错误。FileType
会为您打开该文件args.filename
将是打开文件的列表。读一下。一个接一个-所有python文件代码都不能用于文件或文件名列表。调试argparse
时,我建议print(args)
,这样您就可以清楚地(呃)了解解析器产生了什么)。现在我得到了TypeError:expecter str、bytes或os.PathLike,而不是io.TextIOWrapper,@willeyslidly从代码中删除type=argparse.FileType('r')
-不需要。更新了答案非常感谢。我已经盯着这个看了好几个小时了。@willey,没问题!如果我帮助了你,请将我的答案标记为正确/有用!当做如果您没有使用类型
,请记住默认情况下,args是字符串,因此在本例中非常有用。
parser = argparse.ArgumentParser()
parser.add_argument('filename', nargs='+')
args = parser.parse_args()
for file_name in args.filename:
with open(file_name, 'r') as files:
<do your code here>
# a = files.read()
# print(a)