读写ECMA 3762(开放式包装约定)文件的库
pyecma376-2的Python项目详细描述
PyECMA376-2型
开放包装惯例(OPC)的Python实现。在
ecma376第2部分定义了“开放打包约定”,这是officeopenxml文件格式使用的打包格式。 它指定了如何在物理包(作为ZIP容器)中表示多个逻辑文件(“部分”)、如何表示这些部分之间的语义关系(使用附带的XML部分),以及如何向包中添加元数据和加密签名。 该格式分两步定义:一个包含部分、内容类型和关系的抽象逻辑包模型,以及该包模型到PKZIP文件的物理映射。在
这个Python包的目标是实现OPC包文件的逻辑模型和物理映射,以允许读写这些文件。 但是,它不提供处理包的有效负载的功能,也就是说,不包含从.docx文件等解析MS-Word文档的功能
PyECMA376-2的特点
读取OPC软件包文件
- 列出包含的部分(包括内容类型)
- 将部件读取为类似文件的对象(包括交错部件)
- 解析和跟踪关系
- 解析包元数据(“核心属性”)
编写OPC软件包文件
- 创建和写入部件(通过可写的类似文件的对象,包括交错部件)
- 添加关系(作为简单的Python对象)
- 添加内容类型信息
- 编写和编写包元数据(“核心属性”)
不支持就地修改包。在
当前缺少的功能
- 读取/验证/创建加密签名
依赖性
这个包需要lxml
来读写XML(有适当的XML命名空间支持)。
除此之外,只需要Python标准库。在
Python解释器必须支持python3.6或更高版本。在
使用
读取OPC软件包文件的简短示例:
importpyecma376_2withpyecma376_2.ZipPackageReader("document.docx")asreader:# List parts in packageforpart_name,content_typeinreader.list_parts():print(part_name)# Get Relationship of type "…/officeDocument" from package-level Relationshipsdocument_part_name=reader.get_related_parts_by_type("/")['http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'][0]# Read core properties (package meta data)core_props=reader.get_core_properties()print(core_props.creator)# Open part as (binary) file-like objectwithreader.open_part(document_part_name)aspart:# XML parsing and document interpretation goes hereprint(part.read().decode())
创建并写入OPC软件包文件的简短示例:
^{pr2}$包体系结构
本软件包的架构遵循ECMA标准的逻辑概念:
package_model
模块定义了抽象的OPCPackageReader
和{list_items()
、open_item()
和{ZipPackageReader
和{zip_package
模块实现。在
辅助类和函数,如OPCRelationship
、part_realpath
和{package_model
模块中。在
许可证
该软件包由RWTH亚琛大学过程控制工程(PLT)主席MichaelThies开发。在
它是根据Apache许可证v2的条款发布的。 有关详细信息,请参见许可证和通知文件。在
- 项目
标签: