我正在尝试使用glob打开多个文件,并通过一系列功能来提供它们。我的某些文件已压缩,有些是bz2,有些是纯文本。我通常使用fileinput,但无法弄清楚将其用于压缩文件的语法。基于此Python Fileinput Doc,它应该类似于:

openhook=fileinput.hook_compressed


我的代码如下:

import fileinput
import glob

filestobeanalyzed = glob.glob('./files/*')

for fileName in filestobeanalyzed:
    inputfilename = fileName
    for line in fileinput.input([inputfilename, openhook=fileinput.hook_compressed]):
        #do stuff


我在文件输入行上的=符号处获得了无效的语法。

有什么建议么?

最佳答案

你要

for line in fileinput.input(inputfilename, openhook=fileinput.hook_compressed):
    #do stuff


(我删除了方括号)。您试图在列表构造函数中进行赋值。例如

my_list=["foo",bar="baz"]  #this doesn't work (SyntaxError)


您可能是从使用[]表示函数可选参数的python文档中得到的。

顺便说一句-追溯中通常有更多信息可以帮助查明问题,而不仅仅是错误的类型和行号。 (阅读:当您进行追溯时,如果粘贴整个内容以便我们看到它,通常会受到赞赏)

关于python - Python Fileinput openhook = fileinput.hook_compressed语法使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10887823/

10-12 19:25