python - 如何在 Python 中解压缩复合文件
问题描述
我尝试解压缩文件类型 *.pcbdoc,它是 Altium 的文件格式。我可以使用 7zip 中的“打开存档”查看和提取文件结构,但是我似乎无法在 Python 中打开它。我尝试过 zipfile、py7zr、pyunpack 等,但都没有成功。
我知道我们不确定 *.pcbdoc 是哪种 zip 格式,但是 7zip 如何打开存档?我可以在 python 中做同样的事情吗?有人可以给我一些帮助吗?非常感谢。
我试过的:
- 导入压缩文件
zipfile.ZipFile(source_path).extractall(output_path)
收到错误:zipfile.BadZipFile:文件不是 zip 文件
- 导入 py7zr
py7zr.SevenZipFile(source_path, mode='r').extractall(output_path)
出现错误:py7zr.exceptions.Bad7zFile:不是 7z 文件
- 从 pyunpack 导入存档
存档(source_path).extractall(output_path)
出现错误:pyunpack.PatoolError: patool 无法解压,文件的未知存档格式
解决方案
谢谢您的帮助。从评论中的链接学习:链接,我将 .pcbdoc 处理为 olefile 并且非常成功。这是我所做的:
import olefile
f=olefile.OleFileIO(source_path).openstream(subfolder_path)
print(f.read().decode(errors="ignore"))
推荐阅读
- android - 我对空点异常有一些问题
- unity3d - unity hub 不允许我安装 unity;错误:“没有足够的空间下载和安装所选项目”
- c - 为什么在我的 C 代码中行主矩阵访问比列主矩阵访问运行得慢?
- python-3.x - 如果这些方法彼此相等,如何输出 True?
- python - 使用 pyodbc 和 mysql8 的参数化查询对于具有 int 数据类型的列返回 0
- macos - Gitlab-CI runner 可以与 MacOSx 和 docker 一起在应用商店中发布吗?
- javascript - 无法在 firestore 中使用 set() 合并数据,而是覆盖数据
- vim - 为什么当 ~/.vimrc 丢失时 Vim 文件类型选项打开但存在时关闭?
- python-2.x - 构造不相交随机列表的内存高效版本
- reactjs - 通过使用 JavaScript 互操作导入的 JavaScript 库将 React 应用程序移植到 Blazor 应用程序