在Python中从压缩文件逐行读取
我正在尝试在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)来读取文件的原始内容,然后把这些内容分成一行一行的,接着再逐行检查这些内容。