如何用Python处理ZIP文件

13 投票
2 回答
30258 浏览
提问于 2025-04-17 02:57
a.zip---
      -- b.txt
      -- c.txt
      -- d.txt

用Python处理zip文件的方法,

我可以把zip文件解压到一个临时文件夹,然后一个一个地处理每个txt文件。

不过,我更想知道Python有没有办法让我不用手动解压zip文件,而是直接把zip文件当成一个特殊的文件夹来处理里面的每个txt文件。

2 个回答

7

是的,你可以单独处理每个文件。可以看看这个教程 这里。根据你的需求,你可以参考这个教程中的例子:

import zipfile
file = zipfile.ZipFile("zipfile.zip", "r")
for name in file.namelist():
    data = file.read(name)
    print name, len(data), repr(data[:10])

这个代码会逐个遍历压缩包里的每个文件,并打印出它的名字、长度和前10个字节。

更详细的参考文档可以在 这里 找到。

32

Python的标准库可以帮助你处理很多事情,特别是压缩文件。

Doug Hellman写了很多关于一些特定模块的很有用的文章,你可以在这里找到:https://pymotw.com/3/zipfile/

关于David的帖子补充一下:从Python 2.7开始,Zipfile对象提供了一个上下文管理器,所以推荐的用法是:

import zipfile
with zipfile.ZipFile("zipfile.zip", "r") as f:
    for name in f.namelist():
        data = f.read(name)
        print name, len(data), repr(data[:10])

因为使用了with语句,close方法会自动被调用。这一点特别重要,尤其是当你要往文件里写东西的时候。

撰写回答