【问题标题】:How do I read text files within a zip file?如何读取 zip 文件中的文本文件?
【发布时间】:2013-02-23 07:52:08
【问题描述】:

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

words

和 “text2.txt”:

other words

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

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

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    如果您需要以文本模式打开 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:
            ...
    

    【讨论】:

    • 对于 Python 3.x,我相信这个答案——尤其是 io.TextIoWrapper 的使用——对于正确读取文本文件作为文本而不是字节流是必要的
    【解决方案2】:

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

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

    不要忘记导入 zipfile 模块:import zipfile

    【讨论】:

    • 最好使用with ... as 公式,如stackoverflow.com/a/11482347/2336725
    • @Teepeemm 为什么?如果需要全文解析xml为例
    • @Teepeemm 是不是和python中的with open()函数一样?
    • 这将返回bytes。它不会将字节解码为str (unicode)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2021-12-15
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多