python_打包文件夹到 ZIP 文件
2025-04-11 本文已影响0人
zip11
打包文件夹到 ZIP 文件
打包当前用户 Downloads 文件夹内的 pt 文件夹到 ZIP 文件,ZIP 文件名为 pt_YYYY_MM_DD.zip,保存路径通过变量定义,无用户交互。以下是 Python 脚本:
import os
import zipfile
from datetime import datetime
import pathlib
# 定义源文件夹(当前用户的 Downloads 文件夹内的 pt 文件夹)
downloads_path = os.path.expanduser("~/Downloads")
source_folder = os.path.join(downloads_path, "pt")
# 定义目标 ZIP 文件路径,文件名包含当前年月日
current_date = datetime.now().strftime("%Y_%m_%d")
zip_file = f"C:/Example/Output/pt_{current_date}.zip" # 例如 C:/Example/Output/pt_2025_04_12.zip
# 确保源文件夹存在
if not os.path.exists(source_folder):
print(f"错误:源文件夹 {source_folder} 不存在!")
exit(1)
# 确保目标 ZIP 文件的目录存在
zip_folder = os.path.dirname(zip_file)
if not os.path.exists(zip_folder):
os.makedirs(zip_folder, exist_ok=True)
# 打包文件夹到 ZIP
try:
with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
# 遍历源文件夹中的所有文件和子文件夹
for root, _, files in os.walk(source_folder):
for file in files:
file_path = os.path.join(root, file)
# 计算文件在 ZIP 中的相对路径
arcname = os.path.relpath(file_path, source_folder)
zipf.write(file_path, arcname)
print(f"成功打包 {source_folder} 到 {zip_file}")
except Exception as e:
print(f"打包失败:{e}")
转换说明:
-
源文件夹:
- 使用
os.path.expanduser("~/Downloads")获取当前用户的 Downloads 文件夹路径(跨平台兼容,例如 Windows 上为C:\Users\用户名\Downloads)。 - 使用
os.path.join拼接路径,指向 pt 文件夹(例如C:\Users\用户名\Downloads\pt)。
- 使用
-
ZIP 文件名:
- 使用
datetime.now().strftime("%Y_%m_%d")获取当前日期,格式为YYYY_MM_DD(例如2025_04_12)。 - ZIP 文件路径设为
C:/Example/Output/pt_YYYY_MM_DD.zip(例如C:/Example/Output/pt_2025_04_12.zip)。
- 使用
-
路径检查:
- 检查 pt 文件夹是否存在,若不存在则报错退出。
- 使用
os.makedirs确保 ZIP 文件的保存目录存在。
-
打包逻辑:
- 使用
zipfile.ZipFile创建 ZIP 文件,模式为'w'(写入),压缩方式为ZIP_DEFLATED。 - 使用
os.walk遍历 pt 文件夹中的所有文件,保持文件夹结构写入 ZIP。 -
arcname确保 ZIP 内部路径是相对路径(不包含完整的源路径)。
- 使用
-
错误处理:
- 使用
try-except捕获打包过程中的异常并输出错误信息。
- 使用
-
路径格式:
- 使用
/作为路径分隔符,Python 会自动处理为 Windows 的\。
- 使用
使用方法:
- 确保 Python 已安装(推荐 3.6+)。
- 确保 Downloads 文件夹内有 pt 文件夹(例如
C:\Users\用户名\Downloads\pt)。 - 修改
zip_file的目录部分(C:/Example/Output)为你希望的保存路径(如果需要)。 - 保存脚本为
.py文件(例如zip_pt.py)。 - 运行脚本(例如
python zip_pt.py)。
脚本会自动打包 pt 文件夹到指定路径的 ZIP 文件,文件名包含当前日期(例如 pt_2025_04_12.zip)。如果需要调整(例如添加压缩级别或排除文件),请告诉我!