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

如何用Python提取7Zip分卷压缩文件(x.zip.001格式)

处理7Zip分卷压缩文件的Python方案

首先明确:没有纯Python库能直接识别并解压7Zip生成的.zip.001格式分卷文件——这类分卷是7Zip特有的命名方式,和标准Zip分卷的命名规则(通常是.z01/.z02+.zip)不符,所以zipfile、pyunpack、patoolib这类库都无法直接处理。

可行的纯Python方案是先将所有分卷合并为完整的压缩文件,再用对应库解压:

步骤1:合并所有分卷文件

需要把同前缀的.zip.001/.zip.002...文件按顺序合并成一个完整的Zip文件,代码示例如下:

import os
import re

def merge_7zip_split_zips(base_file_path, output_zip_path):
    # 提取分卷的基础文件名(比如从myfile.zip.001得到myfile.zip)
    base_filename = os.path.basename(base_file_path).rsplit('.', 1)[0]
    dir_path = os.path.dirname(base_file_path)
    
    # 匹配所有同前缀的分卷文件,提取分卷号
    split_files = []
    pattern = re.compile(rf"{re.escape(base_filename)}\.(\d+)")
    for filename in os.listdir(dir_path):
        match = pattern.match(filename)
        if match:
            split_num = int(match.group(1))
            split_files.append((split_num, os.path.join(dir_path, filename)))
    
    # 按分卷号从小到大排序,确保合并顺序正确
    split_files.sort(key=lambda x: x[0])
    
    # 合并所有分卷到目标Zip文件
    with open(output_zip_path, 'wb') as output_f:
        for _, file_path in split_files:
            with open(file_path, 'rb') as input_f:
                output_f.write(input_f.read())
    return output_zip_path

# 示例调用
source_base = r"C:\Users\user\Documents\myfile.zip.001"
merged_zip = r"C:\Users\user\Documents\myfile_merged.zip"
merge_7zip_split_zips(source_base, merged_zip)

步骤2:解压合并后的完整Zip文件

合并完成后,就可以用Python标准库zipfile正常解压了:

import zipfile

extract_dir = r"C:\Users\user\Documents\"
with zipfile.ZipFile(merged_zip, 'r') as zip_ref:
    zip_ref.extractall(extract_dir)

# 可选:删除合并后的临时Zip文件
os.remove(merged_zip)

特殊情况:如果是7z格式分卷

如果你的分卷是.7z.001格式(而非Zip格式),合并后得到的是.7z文件,这时候可以用纯Python库py7zr解压(无需安装7Zip工具):

import py7zr

with py7zr.SevenZipFile(merged_7z_file, mode='r') as z:
    z.extractall(extract_dir)

注意事项

  • 确保所有分卷文件都在同一目录下,无缺失或损坏。
  • 合并过程会生成临时文件,需要保证磁盘有足够的剩余空间。

内容的提问来源于stack exchange,提问作者NewbieInFlask

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:20:46