【发布时间】:2021-07-30 17:46:41
【问题描述】:
我在将 MOBI 文件转换为 Python 中的文本时遇到问题。
我找到了这个库 - https://github.com/iscc/mobi 应该将 MOBI 转换为 EPUB,然后我发现 ebooklib 库在将 EPUB 文件转换为文本时效果很好。
问题是只有 ebooklib 似乎工作正常。如果我给它原生 EPUB 文件,一切都会正常工作。但是,如果我尝试从 mobi 库中将文件路径传递给它,那么我会收到一堆没有多大意义的错误。
而且我不知道究竟是什么原因造成的。也许我的 MOBI 文件以某种方式加密? (它们是我几个月前购买的 Humble Bundle 的原版书籍)。但是 mobi 库并没有对此抛出任何错误。
或者我不能直接传递 mobi 库生成的文件路径?也许我应该以某种方式保存这个文件,将它移动到其他文件夹,然后它才会被 ebooklib“读取”?
我的代码如下所示:
import mobi
import ebooklib
from ebooklib import epub
tempdir, filepath = mobi.extract("book.mobi")
# This throws error:
book = epub.read_epub(filepath)
# Native, normal epub file is working ok:
book = epub.read_epub("book.epub")
在我看来,错误并不能说明什么:
Traceback (most recent call last):
File "/ebooklib/utils.py", line 35, in parse_string
tree = etree.parse(io.BytesIO(s.encode('utf-8')))
AttributeError: 'bytes' object has no attribute 'encode'
【问题讨论】: