在Python中从压缩文件逐行读取

3 投票
4 回答
9203 浏览
提问于 2025-04-16 20:00

我正在尝试在Python中读取一个压缩文件。我只想读取文件名中包含“debug”的文件,并且只打印出包含BROKER_LOGON的行。结果它似乎没有逐行读取,而是把整个包含BROKER_LOGON的文件都打印出来了。请告诉我有没有办法从压缩文件中逐行读取。

import os

import zipfile

import re

def main():
try:
    root = zipfile.ZipFile("C:/Documents and Settings/Desktop/20110526-1708-server.zip", "r")
except:
    root = "."  
for name in root.namelist():
    i = name.find("debug")
    if i>0:
        line = root.read(name).find("BROKER_LOGON")
        if line >0:
            print line


if __name__== "__main__":
    main()

4 个回答

1

你需要先解压这个文件,然后一行一行地读取里面的内容。如果不解压,你看到的就是压缩后的字符数据(也就是一堆乱七八糟的东西)。

4

你可以直接在zipfile里打开一个文件。

试试这样做:

try:
    root = zipfile.ZipFile("C:/Documents and Settings/Desktop/20110526-1708-server.zip", "r")
except:
    root = "."  
for name in root.namelist():
    i = name.find("debug")
    if i>0:
        lines = root.open(name).readlines()
        for line in lines:
            if line.find("BROKER_LOGON") > 0:
                print line

你可以对readlines()返回的行列表做任何你想做的事情。

3
for name in root.namelist():
    if name.find("debug") >= 0:
        for line in root.read(name).split("\n"):
            if line.find("BROKER_LOGON") >= 0:
                print line

这段代码的作用是用root.read(name)来读取文件的原始内容,然后把这些内容分成一行一行的,接着再逐行检查这些内容。

撰写回答