Python中二进制文件IO,如何入门?

11 投票
3 回答
12711 浏览
提问于 2025-04-15 12:07

作为一个自学的Python爱好者,我该如何学习使用标准格式导入和导出二进制文件呢?

我想写一个脚本,把ePub电子书(其实就是一个包含XHTML和CSS的压缩文件)转换成mobipocket(Palmdoc)格式,这样亚马逊Kindle就能读取它(这是我正在进行的一个大项目的一部分)。

现在已经有一个很棒的开源项目可以管理电子书库:Calibre。我想自己尝试实现这个功能,作为一个学习和自我教学的练习。我开始查看他们的Python源代码,但发现自己完全搞不懂里面在说什么。当然,自学的一个大问题就是你不知道自己不知道什么。

在这种情况下,我知道自己对这些二进制文件以及如何在Python代码中处理它们了解得不多(struct?)。但我觉得我可能对二进制文件的知识缺失很多,我希望能得到一些帮助,理解如何处理这些文件。这里有一个关于mobi/palmdoc头部的详细概述。谢谢!

编辑:没有问题,好的观点!你有没有什么建议,可以帮助我获得关于处理二进制文件的基本知识?如果是Python相关的那就更好了,但其他方法也可以有帮助。

TOM:编辑为问题,添加了介绍/更好的标题

3 个回答

0

如果你想自学一些可以处理二进制文件的Python工具,这个网站会很有帮助。而且还挺有趣的。里面有很多关于二进制、压缩文件、图片等的练习……还有更多内容等着你去探索。

2

如果你想要构建和分析二进制文件,struct模块能提供一些基本工具,但使用起来不是特别方便,尤其是当你想查看那些不是整字节的内容时。

有一些模块可以帮你,比如BitVectorbitarraybitstring。(我比较喜欢bitstring,不过这是我自己写的,所以可能有点偏见。)

如果你需要解析二进制格式,hachoir模块非常不错,但我觉得它可能对你现在的需求来说有点复杂。

10

你可以先从struct模块入手,正如你在问题中提到的,当然,打开文件时要选择二进制模式。

简单来说,你就是从文件的开头开始,一点一点地分析里面的内容。这可能会有点麻烦,但并不是特别难。如果文件是压缩过的或者加密的,那就会更复杂一些。最好先从你知道内容的文件开始,这样就不用一直在猜了。

试试看,可能你会有更具体的问题出现。

撰写回答