【脚本系列】如何使用 Python 脚本对同一文件夹中含不同密码的压缩包进行自动解压
·
目录
本教程适用于以下场景:
- 你有一堆
.zip文件,分别设置了不同密码- 每个压缩包的密码已整理在一个 Excel 表中(如:
filename, password)- 你想要批量自动解压,并记录是否成功
📦 1. 安装依赖
确保你已经安装以下 Python 库:
pip install pandas pyzipper openpyxl
🧾 2. Excel 密码文件格式说明
你需要准备一个 .xlsx 文件,内容如下所示:
| filename | password |
|---|---|
| report1.zip | abc123 |
| backup2025.zip | 456def |
filename必须精确匹配压缩包名称password是该压缩包对应的解压密码
例如你的 Excel 文件路径为:
C:/Users/yourname/Desktop/passwords.xlsx
📁 3. 项目文件结构建议
project_folder/
│
├── zip_files/ # 所有压缩包文件夹
│ ├── report1.zip
│ ├── backup2025.zip
│
├── passwords.xlsx # 密码表
├── unzip_script.py # 解压脚本
🧠 4. 脚本源码(附注释)
import os
import pandas as pd
import pyzipper
import datetime
# ✅ 设置文件路径(根据你的情况修改为一般路径)
zip_folder = 'C:/Users/yourname/Desktop/zip_files' # 压缩包所在文件夹
password_file = 'C:/Users/yourname/Desktop/passwords.xlsx' # 密码表路径
output_folder = os.path.join(zip_folder, 'unzipped') # 解压后的文件保存位置
log_file = os.path.join(zip_folder, 'unzip_log.txt') # 日志文件
# ✅ 如果解压结果目录不存在则创建
os.makedirs(output_folder, exist_ok=True)
# ✅ 读取 Excel 密码表
try:
df = pd.read_excel(password_file)
password_map = dict(zip(df['filename'], df['password']))
except Exception as e:
print(f"❌ 密码文件读取失败:{str(e)}")
exit()
# ✅ 创建/覆盖日志文件
with open(log_file, 'w', encoding='utf-8') as log:
log.write(f"📋 解压日志 - 开始时间:{datetime.datetime.now()}\n\n")
# 🔁 遍历所有 zip 文件
for zip_name in os.listdir(zip_folder):
if not zip_name.lower().endswith('.zip'):
continue # 跳过非 zip 文件
zip_path = os.path.join(zip_folder, zip_name)
password = password_map.get(zip_name)
if not password:
log.write(f"⚠️ 跳过:未找到密码 -> {zip_name}\n")
continue
# ✅ 解压目录为每个 zip 建立独立子文件夹
extract_to = os.path.join(output_folder, os.path.splitext(zip_name)[0])
os.makedirs(extract_to, exist_ok=True)
try:
with pyzipper.AESZipFile(zip_path) as zf:
zf.pwd = password.encode('utf-8') # 设置密码
zf.extractall(path=extract_to)
log.write(f"✅ 解压成功:{zip_name}\n")
except Exception as e:
log.write(f"❌ 解压失败:{zip_name},错误:{str(e)}\n")
# ✅ 脚本完成提示
print(f"\n📁 解压完成。日志已保存至:{log_file}")
📌 5. 运行方式
你可以通过以下任意一种方式运行:
✅ 方法 1:命令行
python3 unzip_script.py
✅ 方法 2:在 VSCode / PyCharm 中点击运行
📚 6. 常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
File is not a zip file |
文件不是 zip 或已损坏 | 检查文件是否为有效 zip |
KeyError: 'filename' |
Excel 缺少列名 | 确认首行为 filename 和 password |
| 解压后文件乱码 | zip 编码非 UTF-8 | pyzipper 对中文兼容性较好,仍需注意原始压缩格式 |
✅ 7. 结语
使用这个脚本,你可以:
- 批量处理多密码压缩包
- 自动生成清晰的解压日志
- 解放双手,减少重复操作
更多推荐


所有评论(0)