在使用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(应该报告),但是你可以很容易地找到一个解决方案,如下所示:
-
确定
epub
源的位置:python -c "import epub; print epub.__file__"
-
为
epub
源增加如下功能:def zip_path_join(a, *p): for b in p: a += '/' + b return a
-
查找
os.path.join
的epub
源并替换为zip_path_join
- 享受吧!
感谢您对问题的报告。这是……嗯…我真惭愧,我早就该把它修好了。
所以,我推出了一个新的0.5.2版本,你可以升级你的版本,看看它是否像你期望的那样工作(它应该,但我没有在任何Windows环境上运行单元测试)。
PS:我不会说"我有我的生活和事情发生",但是…对,就是这样…