2009-08-09 5 views
3

Lorsque vous essayez de décaper Inf objet tel que défini dans numpy (je pense), le dumping se passe bien, mais le chargement échoue:Comment décaper les objets Inf de 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'> 

Pourquoi? Et de plus - y a-t-il un moyen de résoudre ce problème? Je veux décaper quelque chose qui a Inf en elle - changer quelque chose d'autre le fera défaut l'élégance du programme ...

Merci

Répondre

5

Si vous spécifiez un protocole de cornichon plus de zéro, cela fonctionnera. Protocole est souvent défini comme -1, ce qui signifie l'utilisation de la plus récente et protocole:

>>> 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

Essayez cette solution à SourceForge qui fonctionnera pour tout objet Python arbitraire:

Module y_serial.py :: entrepôt des objets Python avec SQLite

"Sérialisation + persistance :: dans quelques lignes de code, compresser et annoter des objets Python dans SQLite, puis les récupérer chronologiquement par mots-clés sans aucun SQL Module" standard "le plus utile pour une base de données pour stocker le schéma -less données. "

http://yserial.sourceforge.net

Questions connexes