Sto provando a creare una matrice di dati creata in Python3.2, metterla in pickle e quindi aprirla in Python2.7. Tuttavia, c'è una parte dei dati a cui Python2.7 si oppone, anche se su un campione di dati va bene, e mi chiedevo come capire cosa stava andando storto.Decapaggio utilizzando il protocollo 2: Python3-> 2 dati
Così in Python3.2:
import pickle
with open('c:\\test.pickle', mode='wb') as f:
pickle.dump(t_array, f, 2)
Poi, durante la lettura in Python2.7:
import pickle
f = open('c:\\test.pickle', mode='rb')
t_data = pickle.load(f)
L'errore è:
File "C:\Python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python27\lib\pickle.py", line 1217, in load_build
setstate(state)
TypeError: must be char, not unicode
i dati sono una serie di dicts, annidati al massimo due profondità, ad es .:
{'key3': '3', 'key2': 1.1, 'key1': 1, 'dict': {'dkey2': 2, 'dkey1': 1}}
Che cosa (probabilmente) sta andando male qui? C'è un modo semplice per vedere che cosa nel file di dati originale (grande) sta causando il problema?
Puoi pubblicare un collegamento a una rappresentazione testuale dei dati che stai scaricando (assumendo che sia rappresentabile come testo)? – Taymon
È un file di ~ 30 MB (mentre è in salamoia), quindi non sono sicuro di quanto sarebbe utile. Fa parte anche del motivo per cui ho qualche problema nell'individuare la causa specifica dell'errore ... tutti i dati sono rappresentabili come testo ed è abbastanza simile all'esempio dato, solo con più coppie chiave-valore. – cohoz
Bene, l'esempio funziona per me (anche se, ovviamente, le stringhe tornano come oggetti Unicode). Quindi non posso davvero dire cosa potrebbe andare storto. – Taymon