Estoy tratando de datos una matriz de datos creada en Python3.2, salmuera, y luego ábrala en Python2.7. Sin embargo, hay una parte de los datos a los que se está oponiendo Python2.7, aunque en una muestra de los datos funciona bien, y me preguntaba cómo averiguar qué estaba pasando mal.Decapado utilizando el protocolo 2: Python3-> 2 datos
Así que en Python3.2:
import pickle
with open('c:\\test.pickle', mode='wb') as f:
pickle.dump(t_array, f, 2)
Entonces, cuando se lee en Python2.7:
import pickle
f = open('c:\\test.pickle', mode='rb')
t_data = pickle.load(f)
El error es:
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
los datos es un conjunto de dicts, anidados como máximo dos profundos, por ejemplo:
{'key3': '3', 'key2': 1.1, 'key1': 1, 'dict': {'dkey2': 2, 'dkey1': 1}}
¿Qué (probablemente) va mal aquí? ¿Hay alguna manera fácil de ver qué en el conjunto de datos original (grande) está causando el problema?
¿Puedes publicar un enlace a una representación de texto de los datos que estás descargando (suponiendo que sea representable como texto)? – Taymon
Es un archivo ~ 30MB (encurtido), así que no estoy seguro de lo útil que sería. También es parte de la razón por la que tengo problemas para identificar la causa particular del error ... todos los datos son representables como texto y son bastante similares al ejemplo dado, solo que con más pares clave-valor. – cohoz
Bueno, el ejemplo funciona para mí (aunque, por supuesto, las cadenas vuelven como objetos Unicode). Entonces realmente no puedo decir qué podría estar yendo mal. – Taymon