如何读取 zip 文件中的文本文件?

问题描述 投票:0回答:3

假设我有一个名为“files.zip”的 zip 文件 它包含 “文本1.txt”:

words

和 “文本2.txt”:

other words

如何告诉 python 打开并读取 text1.txt 文件?我知道通常要打开 zip 文件之外的文本文件,我会这样做:

file = open('text1.txt','r')
python python-3.x
3个回答
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


4
投票

自 Python 3.8 起,可以为 zipfile 内容构造 Path 对象,并使用其 read_text 方法将它们读取为文本。 从 Python 3.9 开始,可以在路径对象的 open 方法中指定文本模式。

import zipfile

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_text(encoding='UTF-8')

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

© www.soinside.com 2019 - 2024. All rights reserved.