【问题标题】:How to zip a file in python?如何在python中压缩文件?
【发布时间】:2022-10-25 16:32:47
【问题描述】:

我一直在尝试制作一个 python 脚本来使用 zipfile 模块压缩文件。虽然文本文件被制作成一个 zip 文件,但它似乎并没有压缩它; testtext.txt 为 1024KB,而 testtext.zip(代码的创建)也等于 1024KB。但是,如果我在文件资源管理器中手动压缩 testtext.txt,生成的 zip 文件压缩(具体为 2KB)。如果可能的话,我该如何解决这个逻辑错误?

下面是我用来(不成功)压缩文本文件的脚本。

from zipfile import ZipFile

textFile = ZipFile("compressedtextstuff.zip", "w")
textFile.write("testtext.txt")
textFile.close()

【问题讨论】:

    标签: python zip compression python-module txt


    【解决方案1】:

    这很奇怪。 Python的zipfile默认为存储压缩方式,不压缩! (他们为什么要那样做?)

    您需要指定一种压缩方法。使用支持最广泛的ZIP_DEFLATED

    import zipfile
    zip = zipfile.ZipFile("stuff.zip", "w", zipfile.ZIP_DEFLATED)
    zip.write("test.txt")
    zip.close()
    

    【讨论】:

    • 不幸的是,您指定的代码不起作用;它返回: Traceback(最近一次调用最后一次):文件“C:UsersdanalDocumentspythonziptest est.py”,第 3 行,在 <module> zipFile = zipfile.ZipFile("comptesttext.zip", "w", zipfile.ZIP_DEFLATED) NameError:名称“zipfile”未定义。你的意思是:'ZipFile'?编辑:没关系,我一定是错误地导入了它。该程序现在按预期工作,非常感谢马克!
    • 我测试了该代码,它运行良好,然后我将其复制并粘贴到答案中。你需要发布你的代码让我们看看你做错了什么。
    • 你说的对。我删除它是因为我的建议的答案已经是answered in SO
    【解决方案2】:

    https://docs.python.org/3/library/zipfile.html#zipfile-objects 它建议示例:

    with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
    

    所以你的代码将是

    from zipfile import ZipFile
     
    with ZipFile('compressedtextstuff.zip', 'w', zipfile.ZIP_DEFLATED) as myzip:
    myzip.write('testtext.txt')
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 不幸的是,使用提供的代码时,输​​出的 zip 文件实际上是 1025KB,比原始文本文件大。这很奇怪。
      • 文本文件是随机生成的吗?
      • 有点,文本文件只有 1,000,000 个零(用于测试目的)
      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2011-03-27
      • 2021-10-27
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多