学习python调用olefile库解析ole文件的基本用法

  olefile是Python中用于解析和处理OLE复合文档的轻量级库,它能读取微软 Office旧格式文件(如 .doc、.xls)以及 MSI 安装包等二进制文档,提取其中的流数据、存储结构和元信息,同时支持查看文档内部结构、提取嵌入对象和元数据,适用于文件分析、文档内容提取等场景,是处理OLE格式文档的基础工具。
  运行下面命令安装olefile库。

bash 复制代码
pip install olefile


  olefile库的主要函数如下表所示:

序号 名称 说明
1 isOleFile 判断文件是否为OLE格式
2 OleFileIO 创建OLE文件对象
3 open / close 打开/关闭 OLE 文件
4 openstream 打开指定流,返回文件对象 ,如openstream('\x01Ole10Native')
5 listdir 列出OLE文件中所有的流和存储
6 exists 判断指定的流或存储在OLE文件中是否存在
7 get_size 获取指定流的字节数
8 get_type 获取指定条目的类型,返回流、存储或根目录类型
9 get_rootentry_name 获取根目录名称
10 get_metadata 获取文档元数据,返回OleMetadata 对象
11 getctime/getmtime 获取存储或流的创建/修改时间
12 get_userdefined_properties 获取指定流中的用户自定义属性
13 getclsid 获取指定流或存储的clsid
14 getproperties 获取指定流的属性

  以前面文章中提取的bin文件为例,下面的示例代码获取ole文件的所有流和存储、元数据信息:

python 复制代码
import olefile

filename='xml.bin'

# 检查文件是否为 OLE 格式
is_ole = olefile.isOleFile(filename)
print(f"Is OLE file: {is_ole}")  

with olefile.OleFileIO(filename) as ole:
    # 获取根目录信息
    root = ole.root
    print(f"Root: {root}")
    
    # 列出所有流和存储
    print("\nAll entries:")
    for entry in ole.listdir():
        print(f"  {entry}")

    # 获取元数据
    metadata = ole.get_metadata()
    print(f"Author: {metadata.author}")
    print(f"Title: {metadata.title}")
    print(f"Created: {metadata.create_time}")
    print(f"Modified: {metadata.last_saved_time}")
    
    # 获取文件属性
    print("\nProperties:")
    for prop in metadata.SUMMARY_ATTRIBS:
        value = getattr(metadata, prop, None)
        if value:
            print(f"  {prop}: {value}")


  使用olefile库也能读取OLE文件中指定流的数据,但是遇到和C#调用OpenMcdf模块解析OLE文件类似的问题,想从\x01Ole10Native流中提取原始文件名称及数据,但不知道数据结构,还得继续查找资料。

参考文献:

1https://www.modb.pro/db/585135

2https://github.com/decalage2/olefile

3https://olefile.readthedocs.io/en/latest/

相关推荐
2601_9623413027 分钟前
计算机毕业设计之jsp考研在线复习平台
java·大数据·开发语言·hadoop·python·考研·课程设计
云烟成雨TD1 小时前
LangFlow 1.x 系列【7】工作流创建与部署指南
人工智能·python·agent
月疯1 小时前
np.where()[0]的用法
开发语言·python·numpy
KaMeidebaby1 小时前
卡梅德生物技术快报|纳米抗体技术全套实操流程:AFB1 全合成文库淘选 + 分子对接定点突变参数手册
人工智能·python·tcp/ip·算法·机器学习
hnxaoli1 小时前
统信小程序(十六)xls转xlsx
开发语言·python·小程序
梦想三三2 小时前
Flask + PyTorch模型部署实战:从训练权重到API接口完整工程解析(附完整代码)
人工智能·pytorch·python·flask·模型推理·ai 工程化
用户298698530142 小时前
Python 实现 Excel 与 TXT 文本的高效转换与导出
后端·python·excel
杨超越luckly2 小时前
Agent 应用指南:基于 OurAirports 的中国机场设施数据可视化
python·html·github·可视化·机场设施
卷无止境2 小时前
pytest 从零到实战:要想代码好,测试少不了
后端·python
吃糖的小孩2 小时前
# RootGraph v1.5 收工:我给 QQ 机器人补上了聊天运行时的“黑匣子”
python