Травление по протоколу 2: данные Python3-> 2 - PullRequest
6 голосов
/ 26 февраля 2012

Я пытаюсь данные массива данных, созданного в 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}}

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

1 Ответ

2 голосов
/ 26 февраля 2012

Рассол не так хорош, как может показаться.Уязвимости в системе безопасности и многие другие подобные проблемы

...