Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python argparse打开多个文件_Python 3.x_Argparse - Fatal编程技术网

Python 3.x Python argparse打开多个文件

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

我试图用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 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)