2015-05-22 2 views
-1

файл обработан У меня есть следующий код:питон рассол дамп

import cPickle as pickle 
... 
pickle.dump(wave, open(a_file, 'wb'), protocol=2) 

, который работает отлично. Я хочу, чтобы сжать файл, хотя с помощью BZ2, так что я пытался сделать

pickle.dump(wave, tarfile.open(a_file, 'w:bz2'), protocol=2) 

, но я получаю эту ошибку:

TypeError: argument must have 'write' attribute 

делает рассол просто не правильно распознать файл обработан? как я могу выполнить свалку сокета в tarfile?

ответ

0

Проблема заключается в том, что означает ошибка. Python tarfiles не имеют одинакового интерфейса файлов; вы не можете писать им напрямую, а вместо этого манипулировать ими через объекты TarInfo.


Вы можете использовать форму строк рассол:

tarinfo = TarInfo.frombuf(pickle.dumps(wave, protocol=2)) 

открыть файл обработан

out = tarfile.open(filename, mode=('tarfile_compression.tar.bz2', 'w:bz2')) 

, а затем использовать TarFile.addfile для добавления tarinfo к out.

+0

Я думаю, что это неправильно. 'TarInfo.frombuf'' Построить объект TarInfo из объекта размером 512 байт. ' – Winand

Смежные вопросы