Двоичный файл ввода-вывода в Python, с чего начать? - PullRequest
11 голосов
/ 09 июня 2009

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

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

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

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

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

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

Ответы [ 3 ]

10 голосов
/ 09 июня 2009

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

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

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

2 голосов
/ 09 июня 2009

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

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

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

0 голосов
/ 09 июня 2009

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

...