Вопрос

При попытке выбрать объект Inf, как определено в numpy (я думаю), дамп проходит нормально, но загрузка не удалась:

>>> cPickle.dump(Inf, file("c:/temp/a.pcl",'wb'))
>>> cPickle.load(file("c:/temp/a.pcl",'rb'))
Traceback (most recent call last):
  File "<pyshell#257>", line 1, in <module>
    cPickle.load(file("c:/temp/a.pcl",'rb'))
ValueError: could not convert string to float
>>> type(Inf)
<type 'float'>

Почему это?И более того - есть ли способ это исправить?Я хочу замариновать что-то, в чем есть Inf - замена его на что-то другое испортит элегантность программы...

Спасибо

Это было полезно?

Решение

Если вы укажете протокол рассола больше нуля, он будет работать.Протокол часто указывается как -1, что означает использование новейшего и лучшего протокола:

>>> cPickle.dump(Inf, file("c:/temp/a.pcl",'wb'), -1)
>>> cPickle.load(file("c:/temp/a.pcl",'rb'))
1.#INF                   -- may be platform dependent what prints here.

Другие советы

Попробуйте это решение в SourceForge, которое будет работать для любого произвольного объекта Python:

модуль y_serial.py ::Хранить объекты Python с помощью SQLite

«Сериализация + сохранение::с помощью нескольких строк кода сжимайте и аннотируйте объекты Python в SQLite;затем позже извлеките их в хронологическом порядке по ключевым словам без какого-либо SQL.Самый полезный «стандартный» модуль для базы данных для хранения данных без схемы».

http://yserial.sourceforge.net

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top