【问题标题】:How to create zip without subfolders in Python?如何在 Python 中创建没有子文件夹的 zip?
【发布时间】:2021-03-16 12:56:44
【问题描述】:

我在/tmp/1234/ 中有一些文件,我正在使用 Python 创建一个 zip:

def create_local_zip_file(zipjob_number, folder_path):
    zip_file_path = os.path.join('/tmp/', f'{zipjob_number}.zip')
    with ZipFile(zip_file_path, 'w') as zip_obj:
        for filename in glob.glob(os.path.join(folder_path, "*")):
            zip_obj.write(filename)
    return zip_file_path

这会创建一个 zip,但是当我解压缩创建的 zip 文件时,我会得到一个名为 tmp 的文件夹,该文件夹又包含一个名为 1234 的文件夹,其中包含文件。

如何确保解压缩创建一个名为 1234 的文件夹,其中直接包含文件?

【问题讨论】:

  • 使用arcname参数——zip_obj.write(filename, arcname="whatever")

标签: python linux zip compression


【解决方案1】:

看起来您的每个文件名都包含该文件夹,这就是为什么将它们写入 zipfile 中的目录的原因。

您可以使用“arcname”参数为存档中的文件指定不同的名称

我可以看到一种通过字符串拆分来做到这一点的方法,但是我可以建议改用 pathlib。比如:

from pathlib import Path

...
for file in Path(folder_path).glob("*"):
    zip_obj.write(file, arcname=file.name)
...

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 2017-09-19
    • 2017-03-27
    • 2023-03-12
    • 2016-02-06
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多