epub library for python



在使用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:Python27libsite-packagesepub__init__.py", line 43, in open_epub
return EpubFile(filename, mode)
File "C:Python27libsite-packagesepub__init__.py", line 82, in __init__
self._init_read()
File "C:Python27libsite-packagesepub__init__.py", line 143, in _init_read
self.toc = ncx.parse_toc(self.read_item(item_toc))
File "C:Python27libsite-packagesepub__init__.py", line 276, in read_item
return self.read(os.path.join(self.content_path, path))
File "C:Python27libzipfile.py", line 931, in read
return self.open(name, "r", pwd).read()
File "C:Python27libzipfile.py", line 957, in open
zinfo = self.getinfo(name)
File "C:Python27libzipfile.py", line 905, in getinfo

'存档文件中没有名为%r的项目' % name)KeyError: "没有名为u'OEBPS\toc的项目。"enter code here

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

知道epub本质上是zip文件是有帮助的。Python epub处理库中的一个典型错误是试图用os.path.join在 zip存档中构建路径,就像它是常规文件系统一样。在Windows上,os.path.join压缩不能被zipfile模块识别的Windows文件路径分隔符(即\)。

这是epub库中的一个bug(应该报告),但是你可以很容易地找到一个解决方案,如下所示:

  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. 查找os.path.joinepub源并替换为zip_path_join

  4. 享受吧!

感谢您对问题的报告。这是……嗯…我真惭愧,我早就该把它修好了。

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

PS:我不会说"我有我的生活和事情发生",但是…对,就是这样…

相关内容

  • 没有找到相关文章

最新更新