用于python的epub库

问题描述:

在使用epub python包时得到这个错误,或者你可以说python的epub库,想知道该怎么做。请帮助..用于python的epub库

Traceback (most recent call last): 
File "F:/4th semester/3", line 4, in <module> 
book=epub.open_epub('d:\welcome.epub') 
File "C:\Python27\lib\site-packages\epub\__init__.py", line 43, in open_epub 
return EpubFile(filename, mode) 
File "C:\Python27\lib\site-packages\epub\__init__.py", line 82, in __init__ 
self._init_read() 
File "C:\Python27\lib\site-packages\epub\__init__.py", line 143, in _init_read 
self.toc = ncx.parse_toc(self.read_item(item_toc)) 
File "C:\Python27\lib\site-packages\epub\__init__.py", line 276, in read_item 
return self.read(os.path.join(self.content_path, path)) 
File "C:\Python27\lib\zipfile.py", line 931, in read 
return self.open(name, "r", pwd).read() 
File "C:\Python27\lib\zipfile.py", line 957, in open 
zinfo = self.getinfo(name) 
File "C:\Python27\lib\zipfile.py", line 905, in getinfo 

'有存档中没有名为项%R' %名称) KeyError异常: “没有名为项u'OEBPS \\ toc.ncx”的档案” enter code here

从你的问题,我认为你使用Python-Epub库从这里:https://pypi.python.org/pypi/epub/0.5.1和你正在运行在Windows中。

它有助于知道EPUB s本质上是zip文件。 Python EPUB处理库中的典型错误是试图在 zip档案中构建路径,其中os.path.join就像是常规文件系统一样。在Windows os.path.join上挤压未被zipfile模块识别的Windows文件路径分隔符(即\\)。

这是epub库中的错误(应该报道),但你可以很容易地得到一个变通办法如下:

  1. 确定您epub源位于:

    python -c "import epub; print epub.__file__"

  2. 将以下函数添加到epub来源:

    def zip_path_join(a, *p): for b in p: a += '/' + b return a

  3. 搜索epub来源os.path.joinzip_path_join

  4. 享受更换!
+1

我汇报到位桶的错误为:https://到位桶.ORG/exirel/EPUB /问题/ 5 /无效拉链路 –

感谢您的问题报告。对我来说,这是......耻辱,我应该在很久以前解决这个问题。因此,我已经推出了一个新版本0.5.2,并且您可以升级您的版本并查看它是否按预期工作(它应该,但是我没有在任何Windows环境下运行单元测试)。

PS:我不会说“我有新的生活之类的东西发生”,但...是啊,这只是它...