Двоичный файл IO в python, с чего начать?

Как любитель-питон на основе самообучения, как мне научиться импортировать и экспортировать двоичные файлы с использованием стандартных форматов?

Я хотел бы реализовать script, который берет ePub ebooks (XHTML + CSS в zip файле) и преобразует его в формат mobipocket (Palmdoc), чтобы позволить Amazon Kindle читать его (как часть более крупный проект, над которым я работаю).

Уже существует удивительный проект с открытым исходным кодом для управления библиотеками электронных книг: Calibre. Я хотел попробовать реализовать это самостоятельно как упражнение для обучения/самообучения. Я начал изучать их исходный код python и понял, что понятия не имею, что происходит. Конечно, большая опасность в том, чтобы быть самоучкой на чем-то, не знает, чего вы не знаете.

В этом случае я знаю, что я мало знаю об этих двоичных файлах и о том, как работать с ними в коде python (struct?). Но я думаю, что, вероятно, мне не хватает знаний о бинарных файлах вообще, и я бы хотел, чтобы какая-то помощь поняла, как с ними работать. Ниже приведен подробный обзор заголовков mobi/palmdoc. Спасибо!

Редактировать: нет вопросов, хорошая точка! У вас есть какие-либо советы о том, как получить базовые знания по работе с бинарными файлами? Специфика Python была бы полезна, но могли бы быть полезны и другие подходы.

TOM: Отредактировано как вопрос, добавлено название/лучший заголовок

Ответ 1

Вероятно, вы должны начать с модуля struct, как вы указали в своем вопросе, и, конечно же, откройте файл как двоичный.

В основном вы только начинаете в начале файла и выбираете его отдельно по частям. Это хлопот, но не огромная проблема. Если файлы сжаты или зашифрованы, все может усложниться. Это полезно, если вы начинаете с файла, который вам известен, поэтому вы все время не угадываете.

Попробуй немного, и, может быть, у тебя возникнут более конкретные вопросы.

Ответ 2

Если вы хотите построить и проанализировать двоичные файлы, модуль struct даст вам базовые инструменты, но он не очень дружелюбен, особенно если вы хотите посмотреть на вещи, которые не являются целым числом байтов.

Есть несколько модулей, которые могут помочь, например BitVector, bitarray и bitstring. (Я предпочитаю bitstring, но я написал его и поэтому может быть предвзятым).

Для анализа двоичных форматов модуль hachoir очень хорош, но я подозреваю, что он слишком высокоуровневый для ваших текущих потребностей.

Ответ 3

Для обучения инструментам python, работающим с двоичными файлами, это поможет вам двигаться. Забавно. Упражнения с двоичными файлами, zips, изображениями... больше.