У меня есть код Python, который:
- Извлекает BLOB из сжатой базы данных.
- Вызывает процедуру распаковки в C, которая распаковывает данные.
- Записывает несжатые данные в файл.
Он использует ctypes для вызова подпрограммы C, которая находится в общей библиотеке.
Это в основном работает, за исключением фактической записи в файл. Чтобы распаковать данные, я распаковываю данные в буфер python, созданный с помощью метода ctypes create_string_buffer
:
c_uncompData_p = create_string_buffer(64000)
так что несжатый вызов такой:
c_uncompSize = mylib.explodeCharBuffer (c_data_p, c_data_len, c_uncompData_p)
Размер полученных несжатых данных возвращается в качестве возвращаемого значения.
Но ... я понятия не имею, как заставить Python только писать c_uncompSize
байтов - если я делаю:
myfile.write (c_uncompData_p.raw)
он записывает весь буфер 64 КБ (данные являются двоичными - так что они не заканчиваются нулем).
Итак, мой вопрос - используя Python 2.5, как получить распечатанные байты c_uncompSize вместо целых 64 КБ?
Спасибо
Джейми