用于读写ucf和epub格式的库
UCFlib的Python项目详细描述
ucflib是一个用于读写ucf格式文件的python模块。
adobe的一些产品使用ucf格式,包括indesign idml。ucflib还可以用于读取ocf/epub电子书和libreoffice odt文件,因为它们使用相同的结构(压缩目录)。
有关详细信息,请参见Adobe网站上的the UCF documentation和EPUB Open Container Format (OCF) 3.0 specification。
ucflib是根据mit许可证提供的。
安装
ucflib需要python 2.7或python 3.2或更高版本。您可以使用pip从pypi安装它:
pip install ucflib
或者,您可以下载并解压缩源代码。然后cd进入源目录,并使用以下命令安装它:
python setup.py install
创建新文件
import ucf my_doc = ucf.UCF(mimetype='application/epub+zip') my_doc['OPS/chapter-1.xhtml'] = b'<?xml ?>' my_doc['OPS/epb.opf'] = b'' my_doc.rootfiles.append(('OPS/epb.opf', 'application/oebps-package-xml')) my_doc.save(filename='my_doc.epub')
参数filename可以是字符串,也可以是任何类似文件的对象,可以打开以供写入。或者,如果在创建实例时包含filename,则在保存时可以省略filename:
my_doc = ufc.UCF(filename='my_doc.epub') my_doc['OPS/epb.opf'] = b'' my_doc.save()
创建新实例时使用filename参数。filename可以是字符串,也可以是打开以供读取的任何类似文件的对象:
import ucf my_doc = ucf.UCF(filename='my_doc.epub')
ucf的一个实例是一个有序字典。密钥是存档中文件的名称,并且始终是Unicode字符串。这些值是文件的内容,并且始终是字节字符串。
list(my_doc.keys())
mimetype属性便于访问包中的“mimetype”文件。ucf规范规定该值必须是ascii字符串,因此如果您分配unicode字符串,ufclib将为您编码:
my_doc.mimetype = unicode('application/oebps-package-xml') assert isinstance(my_doc.mimetype, bytes) # True
epub规范要求存档文件中有一个“meta-inf/container.xml”文件。您可以使用快捷方式引用存档文件中“META-INF”目录中的任何文件:
my_doc.meta[u'container.xml'] # Equivalent to my_doc['META-INF/container.xml']
特殊的“meta-inf/container.xml”文件用于在归档文件中查找主文档。可以使用“rootfiles”属性(元组列表)访问路径和mime类型。每个元组实际上是一个命名元组:
for my_tuple in my_doc.rootfiles: my_tuple.path, my_tuple.mimetype
要在根文件列表中创建新条目,只需添加一个元组(或命名元组):
my_tuple = ucf.Rootfile(path='OPS/epb.opf', mimetype='application/oebps-package-xml') my_doc.rootfiles.append(my_tuple)