2009-08-09 3 views
3

При попытке законсервировать объект Inf, как это определено в NumPy (я думаю), сброс идет нормально, но загрузка не удается:Как раскрыть объекты инфузии 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 в нем - изменении его что-то еще изъян элегантности программы ...

Благодарности

ответ

5

Если указать рассол протокола больше нуля, он будет работать. Протокол часто определяется как -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. 
-1

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

y_serial.py модуль :: складских объектов Python с SQLite

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

http://yserial.sourceforge.net

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