You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python跨平台解压多分段加密Zip文件的问题求助

Python跨平台解压多分段加密Zip文件的问题求助

Hi 各位大佬,我最近在写一个要兼容Linux、Windows、MacOS的Python脚本,目的是解压一组分段的加密Zip文件,但自己写的代码跑起来总感觉有点问题,想请大家帮忙看看哪里出了疏漏,或者有没有更靠谱的实现思路。

先跟大家说下我的文件结构,项目根目录下的文件是这样的:

project-root/
├── data.z01
├── ...
├── data.z22
└── data.zip

我的思路是先把所有分段文件按二进制合并成一个完整的Zip,再用zipfile模块处理加密解压,自己写的代码如下:

import shutil
import zipfile
from tqdm import tqdm
# 假设已定义TqdmLogger、pathlib的root路径,以及ZIP_PW密码常量

def _combine_split_zip_files(split_files, combined_file):
    with open(combined_file, 'wb') as wfd:
        for f in tqdm(split_files, file=TqdmLogger(logger)):
            with open(f, 'rb') as fd:
                shutil.copyfileobj(fd, wfd)

def _unzip_protected_zip(zip_file, extract_to, password):
    with zipfile.ZipFile(zip_file, 'r') as zf:
        # 之前这里还犯了缩进错误,已经修正,但还是不确定整体逻辑是否可靠
        zf.extractall(path=extract_to, pwd=password.encode())

# 构造所有分段文件的路径列表
split_files = [root / f"data.z{i:02d}" for i in range(1, 23)] + [root / "data.zip"]
combined_file = root / "combined.zip"

# 执行合并与解压
_combine_split_zip_files(split_files, combined_file)
_unzip_protected_zip(combined_file, root / "data", ZIP_PW)

现在我有几个疑惑和可能的问题点想请教大家:

  • 直接二进制合并分段文件的方式,能不能适配不同工具生成的分段Zip?比如WinRAR和7-Zip导出的分段包,这种合并逻辑会不会有兼容性问题?
  • 跨平台路径我用了pathlib处理,这块应该没问题,但有没有什么容易忽略的坑?
  • 代码完全没做异常处理,要是碰到某个分段文件缺失、密码错误、Zip包损坏的情况,脚本直接就崩了,怎么才能优雅处理这些场景?
  • 合并后的combined.zip临时文件,跨平台下怎么安全删除?比如Windows下会不会出现文件被占用删不掉的情况?
  • 有没有可能不用手动合并分段文件,直接通过某个库或方法直接解压分段Zip?

希望有经验的大佬能给我点改进建议,或者修正后的参考代码,谢谢大家!

备注:内容来源于stack exchange,提问作者matteocali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:19:32