2010-01-18 18 views
5

Soy nuevo en Python. Soy un programador de C de profesión. Tengo un archivo, cuyo encabezado tiene algunos datos específicos, que necesito extraer. Por ejemplo, Byte 0-5 tiene una magia, Byte 6-8 ha compensado etc.¿Cómo leer encabezados de archivo en Python similar a C?

En C (ejemplo):

struct { 
    int32_t payload_offset, 
    int32_t len, 
    char *magic, 
    int32_t type 
    int32_t header_size 
} file_hdr; 

Luego, en mi función, hago lo siguiente:

file_hdr *hdr; 
ptr = &hdr; 
fd = open(path_to_file, "r"); 
num_read = read(fd, ptr, bytes). 

Entonces puedo acceder a los datos de cabecera como esta ptr-> tipo, ptr-> magia, etc.

¿Cómo lograr un efecto similar en Python? Dado que las variables de Python no tienen tipos, ¿cuál es la mejor manera de acceder a los datos del encabezado del archivo?

Necesito usar los datos del encabezado para tomar algunas decisiones.

Gracias de antemano.

Respuesta

6

Una forma es utilizar el módulo python struct, los documentos son here.
Otra opción, si necesita algo más potente, es utilizar la impresionante biblioteca construct que puede hacer lo anterior y mucho más.

3

Esto normalmente se hace usando el módulo struct en Python. Le permite extraer valores de representaciones binarias empaquetadas, impulsadas por cadenas de especificación de formato que usted proporciona.

Cargaría los datos usando E/S binarias en una cadena, luego descomprímalos usando struct.unpack().

Cuestiones relacionadas