2

使用 epub python 包时出现此错误,或者您可以说 epub library for python ,想知道该怎么做。请帮忙..

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 的项目' % name) KeyError: "存档中没有名为 u'OEBPS\\toc.ncx' 的项目"enter code here

4

2 回答 2

2

感谢您报告问题。这……嗯……真丢脸,我早就应该解决这个问题了。

所以,我推出了一个新版本 0.5.2,你可以升级你的版本,看看它是否能按你的预期工作(应该可以,但我没有在任何 Windows 环境上运行单元测试)。

PS:我不会说“我有生活和事情发生”,但是......是的,就是这样......

于 2014-04-01T17:36:33.550 回答
2

根据您的问题,我认为您正在使用Python-Epub此处的库:https ://pypi.python.org/pypi/epub/0.5.1并且您正在 Windows 中运行。

了解EPUB本质上是 zip 文件会有所帮助。Python EPUB 处理库中的一个典型错误是试图zip 存档中构建路径,os.path.join就好像它是常规文件系统一样。在 Windows 上,会压缩模块无法识别的os.path.joinWindows 文件路径分隔符(即) 。\\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来源os.path.join并将其替换为zip_path_join

  4. 享受!
于 2014-04-01T12:18:21.157 回答