如何在 mac 上正确压缩文件以便通过 python 从 s3 解压缩?

How to zip files properly on mac for unzipping via python from s3?

我想压缩文件夹中的一系列文本文件。我压缩文件夹并生成一个 zip 文件。

当我以编程方式调用压缩文件时出现错误:BadZipFile: File is not a zip file

我一直在使用这段代码测试压缩目录:

import zipfile
print (zipfile.is_zipfile("~/path/to/zipfile.zip") )
[output]:false

我什至尝试使用此代码以编程方式创建一个新的压缩目录并尝试上面的压缩文件检查器代码,但也从中得到错误:

import os
import zipfile
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))
zipf = zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('~/Desktop/cleaned_files_2', zipf)
zipf.close()

我没有生成有效的压缩目录,我做错了什么?

总结评论。您提供的 python 代码看起来不错,并且您说将 zip 文件往返传输到 s3 表明它没有被损坏。

然后剩下的问题是您为什么会收到错误 BadZipFile: File is not a zip file

如果您需要进一步的帮助,能否尝试提供一个可重现的示例来说明问题。我怀疑是 haystack.utils API 你是 运行(在你的评论中引用),但这不是我知道的模块。