ZipFile 内的 ZipFile (Python)

背景


我的主目录中有一些名为delivery_content. 该目录内有两个文件夹content_123和content_456。每个目录都包含一个文本文件。所以整体结构如下所示。


-delivery_content

 -content_123/

   -content_123.txt

 -content_456/

   -content_456.txt

我正在编写代码,当给定一个目录时,它将压缩它的所有内容。


代码


import os

import shutil

from pathlib import Path

from datetime import datetime



DOWNLOAD_DIR = Path(os.getenv("HOME")) / "delivery_content"


date = datetime.today().strftime("%Y-%m-%d")

delivery_name = f"foo_{date}"

shutil.make_archive(str(DOWNLOAD_DIR / delivery_name), "zip", str(DOWNLOAD_DIR))

print("Zipping Has Complete")

因此,对于上面给定的代码,我希望在 中看到 foo_todays_date.zip,DOWNLOAD_DIR当我解压缩它时,我希望看到以下内容


 -content_123/

   -content_123.txt

 -content_456/

   -content_456.txt

但是我看到以下内容

https://img1.sycdn.imooc.com/65b0c0620001a8f309410464.jpg

有什么方法可以避免我的 zip 文件中包含 .zip 吗?



12345678_0001
浏览 33回答 1
1回答

MYYA

问题是您将 zip 文件放入要存档的目录中。make_archive可能正在创建一个空文件以验证它可以在开始归档之前写入目标。因此它会将空的 zip 文件视为要存档的文件。我使用该函数看到的唯一方法make_archive是将存档文件放在要存档的目录之外,如下所示:shutil.make_archive(str(DOWNLOAD_DIR / ".."/ delivery_name), "zip", str(DOWNLOAD_DIR))之后您可以随时将 zip 文件移动到 DOWNLOAD_DIR 中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python