ZipFile中的ZipFile(Python)
背景 我的主目录中有一个名为ZipFile中的ZipFile(Python),python,python-3.x,shutil,Python,Python 3.x,Shutil,背景 我的主目录中有一个名为delivery\u content的目录。在该目录中有两个文件夹content\u 123和content\u 456。每个目录包含一个文本文件。因此,总体结构如下所示 -delivery_content -content_123/ -content_123.txt -content_456/ -content_456.txt 我在写代码,当给它一个目录时,它将压缩它的所有内容 代码 import os import shutil from pat
delivery\u content
的目录。在该目录中有两个文件夹content\u 123
和content\u 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,当我解压缩它时,我希望看到以下内容
-content_123/
-content_123.txt
-content_456/
-content_456.txt
然而,我看到了以下几点
-content_123/
-content_123.txt
-content_456/
-content_456.txt
有什么方法可以避免在我的zipfile中使用.zip文件吗?问题是,您正在将zip文件放在正在存档的目录中make_archive
可能正在创建一个空文件,以在开始归档之前验证它是否可以写入目标。因此,它会将空zip文件视为要归档的文件。使用make_archive
功能解决此问题的唯一方法是将归档文件放在要归档的目录之外,如下所示:
shutil.make_archive(str(DOWNLOAD_DIR / ".."/ delivery_name), "zip", str(DOWNLOAD_DIR))
您可以在以后将压缩文件移动到下载目录中。让我困惑的是,哪个参数指定了压缩文件的输出位置?你为什么用“.”?这表明了什么?第一个参数指定了zip文件的存放位置。“.”表示放在下载目录上方的目录中。我只是随意选择了那个位置。在你的环境中可能有一个更好的地方,但只有你自己知道。