python的epub库

时间:2014-03-25 17:37:45

标签: python-2.7 epub epub3

使用epub python包时出现此错误,或者您可以为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

&#39;档案中没有名为%r的项目&#39; % 名称)     KeyError:&#34;没有名为u&#39; OEBPS \\ toc.ncx&#39;在档案馆&#34; enter code here

2 个答案:

答案 0 :(得分:2)

感谢您提供有关该问题的报告。这是......好吧......对我来说很遗憾,我很久以前就已经修好了。

所以,我已经推出了新版本0.5.2,你可以升级你的版本,看它是否按预期工作(它应该,但我没有在任何Windows环境下运行单元测试)。 / p> PS:我不会说“我有生命和事情发生了”,但是......是的,就是这样......

答案 1 :(得分:1)

根据您的问题,我假设您使用的是Python-Epub库:https://pypi.python.org/pypi/epub/0.5.1,而您正在Windows中运行。

知道EPUB本质上是zip文件很有帮助。 Python EPUB处理库中的典型错误是尝试使用os.path.join在 zip存档内部构建路径,就好像它是常规文件系统一样。在Windows os.path.join上挤压\\模块无法识别的Windows文件路径分隔符(即zipfile)。

这是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的{​​{1}}来源,并将其替换为os.path.join

  4. 享受!