Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 18, 2011 10:25:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

pickle Как отличить binary файл от не binary

имею файл на диске полученый cPickle.dump(obj,f) или cPickle.dump(obj,f,2)

Как узнать как его читать?

Проблема в том что текстовый файл прекрасно читается двоичным анпиклером. Конечно неправильно.

Откуда проблема:
Приложение сбрасывает данные в двоичном формате, но иногда для целей редактирования хочется иметь и текстовый формат. Все время иметь такой формат неудобно - большие файлы и долго читаются. Можно договориться менять расширение или что-то подобное, но это конечно не очень удобно, поскольку опирается на соглашения которые половина разработчиков переврет и забудет через 3 недели.

Хотелось както так Load(“aa.dat”) и чтобы оно само разобралось что в файле (в файле конечно один объект).



Офлайн

#2 Июнь 18, 2011 13:09:27

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

pickle Как отличить binary файл от не binary

Не смог проблему воспроизвести cPickle.load все хорошо читает.
Или я чего-то не понял…?

>>> import cPickle
>>> obj = {1: 11, 2: 22, 3: [1,2,3,'123', u'boo']}
>>> with open('TEST_TXT', 'w') as f:
... cPickle.dump(obj, f)
>>> with open('TEST_TXT') as f:
... cPickle.load(f)
0: {1: 11, 2: 22, 3: [1, 2, 3, '123', u'boo']}
>>> with open('TEST_BIN', 'wb') as f:
... cPickle.dump(obj, f, 2)
>>> with open('TEST_BIN') as f:
... cPickle.load(f)
2: {1: 11, 2: 22, 3: [1, 2, 3, '123', u'boo']}
>>>



Офлайн

#3 Июнь 18, 2011 13:10:40

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

pickle Как отличить binary файл от не binary

+1



Офлайн

#4 Июнь 18, 2011 19:44:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

pickle Как отличить binary файл от не binary

pill
Не смог проблему воспроизвести cPickle.load
Спасибо большое вы мне очень помогли.
Было: одно приложение
with open('TEST_TXT', 'w') as f:
cPickle.dump(obj, f)
второе из за недостатка данных
with open('TEST_TXT', 'rb') as f:
obj=cPickle.load( f)
приводило к забавному эффекту - объект грузился … но как список строк



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version