Archivo binario IO en python, ¿por dónde empezar?

Como un aficionado de Python autodidacta, ¿cómo aprendería a importar y exportar archivos binarios utilizando formatos estándar?

Me gustaría implementar un script que tome los libros electrónicos ePub (XHTML + CSS en un archivo zip) y los convierta a un formato de bolsillo móvil (Palmdoc) para permitir que Amazon Kindle lo lea (como parte de un proyecto más grande que yo Estoy trabajando en).

Ya existe un increíble proyecto de código abierto para administrar las bibliotecas de libros electrónicos: Calibre . Quería intentar implementar esto por mi cuenta como un ejercicio de aprendizaje / autoaprendizaje. Comencé a buscar en su código fuente de python y me di cuenta de que no tengo idea de lo que está pasando. Por supuesto, el gran peligro de ser autodidacta en cualquier cosa es no saber lo que no sabes.

En este caso, sé que no sé mucho acerca de estos archivos binarios y cómo trabajar con ellos en el código de Python ( struct ?). Pero creo que probablemente me esté faltando mucho conocimiento sobre los archivos binarios en general y me gustaría algo de ayuda para entender cómo trabajar con ellos. Aquí hay una descripción detallada de los encabezados de mobi / palmdoc. ¡Gracias!

Edit: No hay duda, buen punto! ¿Tiene algún consejo sobre cómo obtener un conocimiento básico sobre cómo trabajar con archivos binarios? Python específico sería útil, pero otros enfoques también podrían ser útiles.

    TOM: Editado como pregunta, agregado intro / mejor título

    Probablemente debería comenzar con el módulo de estructura , como señaló en su pregunta, y por supuesto, abrir el archivo como un binario.

    Básicamente, simplemente comienza al principio del archivo y lo desarmas pieza por pieza. Es una molestia, pero no es un gran problema. Si los archivos están comprimidos o encriptados, las cosas pueden ponerse más difíciles. Es útil si comienza con un archivo del que sabe el contenido, por lo que no está adivinando todo el tiempo.

    Inténtalo un poco, y tal vez puedas desarrollar preguntas más específicas.

    Si quieres construir y analizar archivos binarios, el módulo de estructura te dará las herramientas básicas, pero no es muy amigable, especialmente si quieres ver cosas que no son un número total de bytes.

    Hay algunos módulos que pueden ayudar, como BitVector , bitarray y bitstring . (Yo prefiero la cadena de bits , pero la escribí y, por lo tanto, puede ser parcial).

    Para analizar formatos binarios, el módulo hachoir es muy bueno, pero sospecho que es demasiado alto para sus necesidades actuales.

    Para enseñarte a ti mismo las herramientas de Python que funcionan con archivos binarios, esto te pondrá en marcha . Tambien es divertido. Ejercicios con binarios, cremalleras, imágenes … mucho más.