Python。如何将 MOBI 文件转换为文本(或 EPUB 文件)

Posted

技术标签:

【中文标题】Python。如何将 MOBI 文件转换为文本(或 EPUB 文件)【英文标题】:Python. How to convert MOBI file to a text (or EPUB file) 【发布时间】: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'

【问题讨论】:

【参考方案1】:

你可以把它保存为html文件

pip install mobi

import mobi
filepath="./example.mobi"
folder="./"

!mobiunpack -r   filepath folder

所有可用选项列表here

或者在这里我提出另一种方法:

pip install mobi
pip install html2text

import mobi
import html2text

filename="test.mobi"
tempdir, filepath = mobi.extract(filename)
file = open(filepath, "r")
content=file.read()
print(html2text.html2text(content))

【讨论】:

但是这段代码不起作用。即使我将它更改为python conde,删除';',修复for循环(它没有在任何地方使用'record'?)然后它告诉我'mobi'没有'Mobi'。后来它在'book.parse()'上显示错误 - AttributeError: 'tuple' object has no attribute 'parse' 是的,由于旧的python版本检查了这个错误,我只是更改了Python3的代码 很抱歉,如果我还有一个问题。我想知道是否可以在此设置中循环页面?因为据我检查,在extract 之后我们基本上有“一个”文本字符串,没有关于页面的信息? 我认为最好的方法是检查 mobiunpack 命令的完整选项列表,否则需要一种方法来遍历它们。

以上是关于Python。如何将 MOBI 文件转换为文本(或 EPUB 文件)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用calibrer如何将pdf转化为mobi

如何使用python将txt文件或PDF转换为Word doc?

怎样电子书的格式转换

使用 Python 将 NetCDF 文件转换为 CSV 或文本

是否可以使用 python 创建 .mobi 文件?如果是这样,如何?

如何把azw3,mobi,epub等文件转换成常见的格式