python對象是一個嵌套的字符串和數字列表。python cPickle unpickling error invalid load key
該文件被打開寫爲'w'(而不是'wb'),但cPickle被告知使用協議= 1(如此二進制)。
序列化和反序列化代碼在Linux上運行良好。我無法恢復保存在Windows機器上的對象(Python 2.6)。
我明白(現在)該文件應該已經在Windows中明確打開爲'wb',因爲行尾。也就是說寫入的對象是一個嵌套列表,並且不包含\ n,所以我不確定這是否重要。
我的問題是可以做些什麼來恢復數據?
這裏是print repr(open(fqfn, 'rb').read(15))
結果:
']q\x01(]q\x02]q\x03(U\x0fst'
任何想法讚賞。
我試圖l = cPickle.load(open(fqfn, 'r'))
爲suggested by mhawke,但Windows送我一個EOF錯誤。
如果我直接在十六進制編輯器中打開文件,我可以簡單地將'\r\n'
的實例替換爲10
和13
,然後使用二進制模式恢復?
的輸入序列是這樣的:
[['start', 3454654], [1234567645, -1 , 99], [1234567900, 1 , 56], ...]
我知道輸入的順序,每個列表的長度和一些值(例如開頭的字符串和一些號碼)。
所以我想我的問題是我是否可以通過編寫處理二進制編碼的腳本來反序列化。我不需要把它變成python對象 - ascii足夠好。