一个功能强大的批量解压缩工具,支持嵌套解压、中文文件名处理和多种压缩格式。
- 🔄 嵌套解压: 自动处理压缩包中的压缩包,支持无限层级嵌套
- 🔤 中文支持: 智能处理各种编码的中文/日文/韩文文件名
- 📦 多格式支持: ZIP、RAR、7Z、TAR、TAR.GZ、TAR.BZ2、TAR.XZ
- 📄 扁平化提取: 可选择只提取文件,忽略文件夹结构
- 🛡️ 安全备份: 自动创建备份,防止数据丢失
- 📊 详细统计: 实时显示处理进度和详细日志
batch_extractor/
├── main.py # 主程序入口
├── config.py # 配置常量
├── utils.py # 工具函数
├── extractors.py # 解压器模块
└── README.md # 使用说明
# Python 3.6+ 自带的标准库已足够处理 ZIP 和 TAR 格式# RAR 支持
pip install rarfile
# 7Z 支持
pip install py7zr# 标准模式(创建备份,删除原文件,保持结构)
python main.py /path/to/your/folder
# 扁平化提取(只要文件,不要文件夹)
python main.py /path/to/your/folder --extract-flat
# 不创建备份
python main.py /path/to/your/folder --no-backup
# 保留原压缩文件
python main.py /path/to/your/folder --keep-original
# 不保持目录结构
python main.py /path/to/your/folder --flat-structure# 扁平化提取 + 不创建备份 + 保留原文件
python main.py /path/to/folder --extract-flat --no-backup --keep-originaldirectory: 要处理的目录路径(必需)--no-backup: 不创建备份副本--keep-original: 保留原压缩文件(不删除)--flat-structure: 不保持原有目录结构--extract-flat: 扁平化提取,只提取文件内容,忽略文件夹结构
- 📋 创建备份: 复制整个工作目录作为备份
- 🔍 扫描文件: 递归扫描所有支持的压缩文件
- 🔄 多轮解压: 循环解压,直到没有新的压缩文件产生
- 🗑️ 清理文件: 可选删除已成功解压的原压缩文件
- 📊 统计报告: 输出详细的处理统计信息
原始结构: 处理后:
project.zip project/
├─ docs/ ├─ docs/
│ ├─ readme.txt │ ├─ readme.txt
│ └─ nested.rar │ ├─ manual.pdf (from nested.rar)
├─ src/ │ └─ guide.doc (from nested.rar)
│ └─ main.py ├─ src/
└─ config.json │ └─ main.py
└─ config.json
原始结构: 扁平化后:
project.zip 直接提取到目标目录:
├─ docs/ ├─ readme.txt
│ ├─ readme.txt ├─ manual.pdf
│ └─ nested.rar ├─ guide.doc
├─ src/ ├─ main.py
│ └─ main.py └─ config.json
└─ config.json
- 路径安全: 防止路径遍历攻击
- 编码处理: 智能处理多种字符编码
- 错误恢复: 单个文件失败不影响整体处理
- 备份机制: 自动创建带时间戳的备份
- 冲突处理: 自动处理文件名冲突
| 格式 | 扩展名 | 依赖要求 | 密码支持 |
|---|---|---|---|
| ZIP | .zip | 内置 | 检测 |
| RAR | .rar | rarfile | 检测 |
| 7-Zip | .7z | py7zr | 检测 |
| TAR | .tar | 内置 | - |
| TAR.GZ | .tar.gz, .tgz | 内置 | - |
| TAR.BZ2 | .tar.bz2, .tbz2 | 内置 | - |
| TAR.XZ | .tar.xz, .txz | 内置 | - |
工具会生成详细的处理日志,包括:
- 每个压缩文件的发现和处理状态
- 文件大小和解压路径信息
- 成功/失败统计
- 错误原因详细说明
- 处理时间和释放空间统计
日志同时输出到控制台和日志文件(batch_extractor_YYYYMMDD_HHMMSS.log)。
- 备份重要性: 首次使用建议保留备份选项
- 磁盘空间: 确保有足够空间进行解压操作
- 权限要求: 确保对目标目录有读写权限
- 密码保护: 无法处理密码保护的压缩文件
- 嵌套深度: 理论上支持无限层级,但受系统限制
- RAR文件无法解压: 安装
pip install rarfile - 7Z文件无法解压: 安装
pip install py7zr - 编码错误: 工具会自动尝试多种编码
- 权限不足: 确保对目录有完整的读写权限
python main.py --helpMIT License - 可自由使用和修改。