Травление с использованием протокола 2: данные Python3-> 2

я пытаюсь передать данные в массив данных, созданный в Python3.2, обработать его, а затем открыть это в Python2.7. Однако есть некоторая часть данных, против которой возражает Python2.7, хотя на выборке данных он работает нормально, и мне было интересно, как выяснить, что идет не так.

Итак, в Python3.2:

import pickle
with open('c:\\test.pickle', mode='wb') as f:
    pickle.dump(t_array, f, 2)

Затем при чтении в Python2.7:

import pickle
f = open('c:\\test.pickle', mode='rb')
t_data = pickle.load(f)

Ошибка:

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

Данные представляют собой массив словарных статей, вложенных не более двух в глубину, например:

{'key3': '3', 'key2': 1.1, 'key1': 1, 'dict': {'dkey2': 2, 'dkey1': 1}}

Что (вероятно) здесь не так? Есть ли простой способ узнать, что в исходном (большом) наборе данных вызывает проблему?

6
задан Martijn Pieters 10 May 2014 в 15:02
поделиться