【问题标题】:Python Fileinput openhook=fileinput.hook_compressed syntax usePython Fileinput openhook=fileinput.hook_compressed 语法使用
【发布时间】:2012-06-04 20:23:07
【问题描述】:

我正在尝试使用 glob 打开多个文件并通过一系列函数提供它们。我的一些文件是 gzip 压缩的,有些是 bz2,有些是纯文本。我通常使用文件输入,但无法弄清楚将其用于压缩文件的语法。基于这个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

我在文件输入行的 = 符号处得到一个无效的语法。

有什么建议吗?

【问题讨论】:

    标签: python gzip glob file-io


    【解决方案1】:

    你想要

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

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

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

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

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

    【讨论】:

    • 实际上这就是整个回溯,只是“=”上的语法错误和指向该位置的箭头。不过谢谢,是的,我从 python 文档中得到了这个想法。您的解决方案效果很好,再次感谢。
    猜你喜欢
    • 2010-12-08
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多