Python中的二进制文件IO,从哪里开始?

11
作为一个自学的Python爱好者,我该如何学习使用标准格式导入和导出二进制文件?
我想实现一个脚本,将ePub电子书(zip中的XHTML + CSS)转换为mobi格式,以便让Amazon Kindle阅读器阅读它(作为我正在进行的一个更大项目的一部分)。
已经有一个很棒的开源项目来管理电子书库:Calibre。我想尝试自己实现这个功能,作为自学练习。我开始查看他们的python源代码,但意识到我不知道发生了什么。当然,自学任何东西的最大危险就是不知道你不知道什么。
在这种情况下,我知道我对这些二进制文件以及如何在Python代码中处理它们(struct?)知之甚少。但我认为我可能忽略了关于二进制文件的许多知识,并希望得到帮助了解如何处理它们。这里有一个详细的概述关于mobi/palmdoc头。谢谢!
编辑:没有问题,好观点!你有关于如何获得处理二进制文件的基础知识的任何技巧吗?Python特定的将会很有帮助,但其他方法也可能有用。
TOM: 编辑为问题,添加了介绍/更好的标题。

4
那么,您确切的问题是什么? - Nicolas Dumazet
3个回答

10

你可能应该从你在问题中提到的struct模块开始,当然,要将文件作为二进制文件打开。

基本上,你只需从文件开头开始逐个分解它。这很麻烦,但不是非常大的问题。如果文件被压缩或加密,事情可能会更加困难。最好从你已知内容的文件开始,这样你就不用一直猜测了。

试着去做一下,也许你会有更具体的问题。


2
如果您想构建和分析二进制文件,struct模块将为您提供基本工具,但它并不是非常友好,特别是如果您想查看不是整个字节的内容。

有一些模块可以帮助您,例如BitVectorbitarraybitstring。(我更喜欢bitstring,但我编写了它,可能有偏见)。

对于解析二进制格式,hachoir模块非常好,但我怀疑它对您当前的需求来说过于高级。


0

如果你想自学处理二进制文件的Python工具,这个链接可以帮助你入门。而且还很有趣。里面有许多关于二进制、压缩包、图片等方面的练习。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接