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

ajk*_*y94 4 python python-3.x

所以说我有一个名为"files.zip"的zip文件,它包含"text1.txt":

words
Run Code Online (Sandbox Code Playgroud)

和"text2.txt":

other words
Run Code Online (Sandbox Code Playgroud)

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

file = open('text1.txt','r')
Run Code Online (Sandbox Code Playgroud)

sol*_*pse 13

您可以像这样使用zipfile模块:

zip = zipfile.ZipFile('test.zip')
file = zip.read('text1.txt')
Run Code Online (Sandbox Code Playgroud)

别忘了导入zipfile模块: import zipfile

  • 使用`with ... as`表达可能更好,如http://stackoverflow.com/a/11482347/2336725 (8认同)
  • 这将返回“字节”。它不会将字节解码为“str”(unicode) (7认同)

iaf*_*her 11

如果您需要以文本模式打开 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:
        ...
Run Code Online (Sandbox Code Playgroud)

  • 对于 Python 3.x,我相信这个答案 - 特别是 io.TextIoWrapper 的使用 - 对于正确地将文本文件读取为文本而不是字节流是必要的 (3认同)