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

python如何将MOBI文件转换为文本(或EPUB文件),python,epub,ebooklib,Python,Epub,Ebooklib,我在用Python将MOBI文件转换为文本时遇到问题 我找到了这个库——它可以将MOBI转换成EPUB,然后我找到了ebooklib库,它可以很好地将EPUB文件转换成文本 问题是,只有电子书库似乎工作正常。如果我给它原生EPUB文件,一切都正常工作。但是,如果我试图从mobi库传递文件路径到it,那么我会收到一堆毫无意义的错误 我不知道到底是什么原因造成的。也许我的MOBI文件被加密了?(它们是我几个月前买的简陋书包里的原版书)。但mobi图书馆并没有就此抛出任何错误 或者我不能直接传递mob

我在用Python将MOBI文件转换为文本时遇到问题

我找到了这个库——它可以将MOBI转换成EPUB,然后我找到了ebooklib库,它可以很好地将EPUB文件转换成文本

问题是,只有电子书库似乎工作正常。如果我给它原生EPUB文件,一切都正常工作。但是,如果我试图从mobi库传递文件路径到it,那么我会收到一堆毫无意义的错误

我不知道到底是什么原因造成的。也许我的MOBI文件被加密了?(它们是我几个月前买的简陋书包里的原版书)。但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'

您可以将其另存为html文件

pip install mobi

所有可用选项的列表

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

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”对象没有属性“parse”
Yes检查了这个错误,因为是旧的python版本,我刚刚更改了Python3的代码非常感谢。很抱歉,如果我还有一个问题的话。我想知道在这个设置中是否可以循环页面?因为据我检查,在
extract
之后,我们基本上有一个没有页面信息的文本字符串?我认为最好的方法是检查mobiunpack命令的完整选项列表,否则需要一种迭代方法。
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))