【问题标题】:How to zip files properly on mac for unzipping via python from s3?如何在mac上正确压缩文件以通过python从s3解压缩?
【发布时间】:2021-07-10 16:14:26
【问题描述】:

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

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

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

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

我什至尝试使用此代码以编程方式创建一个新的压缩目录并尝试上面的 zipfile 检查器代码,但也从中得到 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 程序中测试您创建的压缩文件。例如zip -t Zipped_file.zip 输出什么?
  • @pmqs 当我运行您的线路时,我在终端中收到此错误:zip error: Invalid command arguments (invalid date entered for -t option - use mmddyyyy or yyyy-mm-dd)。还有什么我可以做的测试吗?
  • 对不起,我的错字我的意思是zip -T Zipped_file.zip。也可以试试unzip -t Zipped_file.zip
  • @pmqs 上面的 python 代码正在生成一个空的 zip 文件。我回去手动创建了一个 zip 文件。我运行了你的两条线并得到了这个:zip -T cleaned_files_2.zip test of cleaned_files_2.zip OK unzip -T cleaned_files_2.zip Updated time stamp for cleaned_files_2.zip. 我在第一段代码中将cleaned_files_2.zip 运行到 zipfile 检查器中,仍然得到FALSE
  • @pmqs 我在原始函数中硬编码了文件路径,并传回了 zipfile 以检查它是否是真正的 zipfile,这次我得到了一个 TRUE。现在正在试验,看看它是否能解决问题。

标签: python-3.x amazon-web-services amazon-s3 zip


【解决方案1】:

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

这就留下了为什么您会收到错误BadZipFile: File is not a zip file 的问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 2012-08-07
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2012-01-08
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多