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
相关产品推荐
相关产品推荐

