如何读取压缩文件中的文本文件?

15 投票
3 回答
33767 浏览
提问于 2025-04-17 18:20

假设我有一个压缩文件,名字叫“files.zip”,里面包含了两个文本文件:

words

一个是“text1.txt”,还有一个是“text2.txt”。

other words

我想知道怎么用Python打开并读取“text1.txt”这个文件。我知道如果是打开一个不在压缩文件里的文本文件,我通常会这样做:

file = open('text1.txt','r')

3 个回答

5

从Python 3.8开始,你可以为zip文件的内容创建一个叫做的对象,并使用它的方法把内容当作文本来读取。从Python 3.9开始,你还可以在这个对象的方法中指定文本模式。


with zipfile.ZipFile('spam.zip') as zf:
    # Create a path object.
    path = zipfile.Path(zf, at='somedir/somefile.txt')

    # Read all the contents (Python 3.8+):
    contents = path.read(encoding='UTF-8')

    # Or open as as file (Python 3.9+):
    with path.open(encoding='UTF-8') as f:
        # Do stuff

27

如果你需要在一个ZIP压缩文件里以文本模式打开一个文件,比如为了把它传给csv.reader,你可以使用io.TextIOWrapper来实现:

import io
import zipfile

with zipfile.ZipFile("files.zip") as zf:
    with io.TextIOWrapper(zf.open("text1.txt"), encoding="utf-8") as f:
        ...
17

你可以这样使用 zipfile 模块:

zip = zipfile.ZipFile('test.zip')
file = zip.read('text1.txt')

别忘了先导入 zipfile 模块:import zipfile

撰写回答