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


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

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

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

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

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

Том: отредактировано как вопрос, добавлено вступление / лучшее название

3 11

3 ответа:

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

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

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

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

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

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

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