1

我正在尝试使用 glob 打开许多文件并通过一系列函数提供它们。我的一些文件是 gzip 压缩的,有些是 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

我在 = 符号处的 fileinput 行上得到一个无效的语法。

有什么建议么?

4

1 回答 1

2

你要

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

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

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

您可能从 python 文档中得到了这个想法,该文档使用[and]来指示函数的可选参数。

这只是一个问题——回溯中通常有更多信息可以帮助确定问题,而不仅仅是错误类型和行号。(阅读:当您有回溯时,如果您粘贴整个内容以便我们可以看到它,通常会受到赞赏)

于 2012-06-04T20:54:45.877 回答