Как читать заголовки файлов в Python, аналогичных C? - PullRequest
5 голосов
/ 18 января 2010

Я новичок в Python. Я программист на Си по профессии. У меня есть файл, заголовок которого содержит некоторые конкретные данные, которые мне нужно извлечь. Например, байт 0-5 имеет магию, байт 6-8 имеет смещение и т. Д.

В С (пример):

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

Затем в своей функции я делаю следующее:

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

Затем я могу получить доступ к данным заголовка, таким как ptr-> type, ptr-> magic и т. Д.

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

Мне нужно использовать данные заголовка для принятия некоторых решений.

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 18 января 2010

Один из способов - использовать модуль python struct, документы здесь .
Другой вариант, если вам нужно что-то более мощное, - это использовать потрясающую библиотеку construct , которая может выполнять вышеописанное и многое другое.

3 голосов
/ 18 января 2010

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

Вы загружаете данные, используя двоичный ввод / вывод, в строку, а затем распаковываете ее с помощью struct.unpack ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...