Модуль Python для реализации двоичных форматов файлов? - PullRequest
7 голосов
/ 20 февраля 2011

Мне часто приходится писать код для взаимодействия с двоичными форматами файлов, для которых нет существующих инструментов.Я ищу простой способ реализации программ чтения / записи для структурированных двоичных форматов - в идеале - то, что позволит мне создать программу чтения с использованием некоторого простого декларативного формата.Создайте модуль , который работает, но, похоже, был в значительной степени заброшен автором.Мне интересно, есть ли какие-нибудь альтернативы, с которыми люди работали.

Ответы [ 2 ]

6 голосов
/ 20 февраля 2011

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

Это один из способов создания в двоичном формате:

fmt = 'sequence_header_code,
       uint:12=horizontal_size_value,
       uint:12=vertical_size_value,
       uint:4=aspect_ratio_information,
       ...
       '
d = {'sequence_header_code': '0x000001b3',
     'horizontal_size_value': 352,
     'vertical_size_value': 288,
     'aspect_ratio_information': 1,
     ...
    }

s = bitstring.pack(fmt, **d)

и один метод, чтобы разобрать его потом:

>>> s.unpack('bytes:4, 2*uint:12, uint:4')
['\x00\x00\x01\xb3', 352, 288, 1]
4 голосов
/ 20 февраля 2011

Посмотрите на Hachoir .

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