Son*_*nia 22 python zip stream
我正在尝试使用zipfile模块来读取存档中的文件.未压缩文件大约为3GB,压缩文件大小为200MB.我不希望它们在内存中,因为我逐行处理压缩文件.到目前为止,我已经注意到使用以下代码的内存过度使用:
import zipfile
f = open(...)
z = zipfile.ZipFile(f)
for line in zipfile.open(...).readlines()
print line
Run Code Online (Sandbox Code Playgroud)
我使用SharpZipLib在C#中完成了它:
var fStream = File.OpenRead("...");
var unzipper = new ICSharpCode.SharpZipLib.Zip.ZipFile(fStream);
var dataStream = unzipper.GetInputStream(0);
Run Code Online (Sandbox Code Playgroud)
dataStream是未压缩的.我似乎无法在Python中找到一种方法.帮助将不胜感激.
Gar*_*tty 54
Python文件对象提供迭代器,它将逐行读取.file.readlines()读取它们并返回一个列表 - 这意味着它需要将所有内容读入内存.更好的方法(应始终优先考虑readlines())就是循环遍历对象本身,例如:
import zipfile
with zipfile.ZipFile(...) as z:
with z.open(...) as f:
for line in f:
print line
Run Code Online (Sandbox Code Playgroud)
注意我对with语句的使用- 文件对象是上下文管理器,而with语句允许我们轻松编写可读代码,以确保在退出块时关闭文件(即使在例外情况下).在处理文件时,应始终使用此功能.
| 归档时间: |
|
| 查看次数: |
20285 次 |
| 最近记录: |