2012-02-25 8 views
6

私はPython3.2で作成したデータ配列をピーリングし、Python2.7で開くことを試みています。しかし、Python2.7が対象とするデータの一部がありますが、データのサンプルではうまくいきますが、どういうことが間違っているのかを知る方法は不思議でした。 Python3.2中のSOプロトコル2を使用した酸洗: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 

データの配列でありますディクテーションは、最大で2つ深くネストされます。例:

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

ここで何が起こっているのでしょうか?元の(大)データセットで何が問題を引き起こしているかを確認する簡単な方法はありますか?

+0

ダンピングしているデータのテキスト表現へのリンクを投稿することはできますか(テキストとして表現可能であるとします)? – Taymon

+0

〜30MBのファイル(ピクルされている間)ですので、どのように役立つか分かりません。また、エラーの特定の原因を特定するのが難しい理由の一部です...すべてのデータはテキストとして表現され、与えられた例とかなり類似しています。 – cohoz

+0

さて、この例は私にとってはうまくいきます(もちろん、文字列はUnicodeオブジェクトとして戻ってきます)。だから私は本当に間違っているかもしれないと言うことはできません。 – Taymon

答えて

2

ピクルスは、それが見えるほど良くはありません。セキュリティの脆弱性、およびこれらのような多くの問題。

もっと良いアイデアは、jsonを使用して独自の保存形式を作成することです。

+0

これは最高に終わったものです。ここでセキュリティは問題ではなく、私は最後にeval()を使ってほとんどの作業を行うことができました。 – cohoz