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

如何使用Python解压Altium格式的*.pcbdoc复合文件

*.pcbdoc 属于微软OLE复合文档(Structured Storage)格式,不是标准ZIP/7Z压缩包,7-Zip自带OLE格式解析能力所以能正常读取,你之前用的通用解压库默认不支持该格式所以报错。以下是两种可落地的解决方案:

方案1:调用本地7-Zip程序解压(兼容性最优,和手动操作7z效果完全一致)

前提:已安装7-Zip,且将7z.exe所在路径加入系统环境变量PATH,或直接在代码中写死7z.exe的绝对路径。

import subprocess
import os

source_path = r"替换为你的pcbdoc文件路径"
output_path = r"替换为你的解压输出文件夹路径"

# 自动创建输出目录
os.makedirs(output_path, exist_ok=True)

# 7z命令参数说明:x为全路径解压,-o后直接跟输出路径不要加空格,-y为自动确认所有提示
# 若未配置环境变量,将下方的'7z'替换为7z.exe绝对路径,例如 r'C:\Program Files\7-Zip\7z.exe'
cmd = f'7z x "{source_path}" -o"{output_path}" -y'
# 执行命令,若需要静默无日志输出,可添加参数 stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
subprocess.run(cmd, shell=True, check=True)

方案2:纯Python代码解析OLE格式解压

依赖专门处理微软复合文档的olefile库,无需安装7-Zip。

  1. 先安装依赖:
    pip install olefile
  2. 解压代码:
import olefile
import os

source_path = r"替换为你的pcbdoc文件路径"
output_path = r"替换为你的解压输出文件夹路径"
os.makedirs(output_path, exist_ok=True)

# 加载pcbdoc文件
ole = olefile.OleFileIO(source_path)
# 遍历所有内部文件流
for stream_path in ole.listdir():
    # 跳过目录项,仅处理文件流
    if ole.get_type(stream_path) != olefile.STGTY_STREAM:
        continue
    # 生成本地输出文件路径
    local_file_path = os.path.join(output_path, *stream_path)
    os.makedirs(os.path.dirname(local_file_path), exist_ok=True)
    # 写入文件
    with open(local_file_path, 'wb') as f:
        f.write(ole.openstream(stream_path).read())
ole.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:03