本教程适用于以下场景:

  • 你有一堆 .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 缺少列名 确认首行为 filenamepassword
解压后文件乱码 zip 编码非 UTF-8 pyzipper 对中文兼容性较好,仍需注意原始压缩格式

✅ 7. 结语

使用这个脚本,你可以:

  • 批量处理多密码压缩包
  • 自动生成清晰的解压日志
  • 解放双手,减少重复操作
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐