我有一个非常大的zip文件,它被分成多个部分作为拆分档案,在档案中有一个文件。我没有足够的资源将这些档案组合在一起或提取它们(原始文本文件接近1TB)。
我想逐行解析文本文件,理想情况下使用类似的东西:
import zipfile
for zipfilename in filenames:
with zipfile.ZipFile(zipfilename) as z:
with z.open(...) as f:
for line in f:
print line
这可能吗?如果是这样,我该如何阅读文本文件:
提前感谢您的帮助。
答案 0 :(得分:2)
我会刺伤。
如果您的zip文件是根据Zip文件格式的所谓“拆分档案”,您将无法使用Python的zipfile库或unzip
终端命令读取它们。
另一方面,如果您正在处理使用split
命令或类似的字节拆分设备拆分的单个zip存档,您可能能够提取并读取其中的内容。用Python飞。
您必须编写一个“类文件”自定义类,它将接受seek()和read()方法(可能还有其他方法)并在拆分块上执行它们。
seek()将需要计算要读取的zip文件,打开它(如果它不是当前文件仍然打开)并使用偏移量的差异对其执行seek()。
read()将从当前打开的块读取,处理文件结束条件,这将导致它打开下一个块并完成对它的读取。
在编写并测试此类之后,只需调用ZipFile构造函数将类的实例作为要打开的“虚拟zip”文件对象传递。