在我的腳本中,我試圖保存一個字典使用cPickle。一切正常,除了加載字典的東西有修改每個鍵。 我的字典裏是這樣的:{'a':[45,155856,26,98536], 'b':[88,68,9454,78,4125,52]...}
cPickle保存的對象加載修改 - Python
當我從保存前本詞典打印鍵,它打印正確的值:'a','b'...
但是,當我保存它,然後加載使用的cPickle,每個鍵包含'\r'
後正確的字符:'a\r','b\r'...
這裏是節省代碼:
def saveSuffixArrayDictA():
for i in self.creation.dictA.keys():
print len(i)
print 'STOP'
with open('dictA','w+') as f:
pickle.dump(self.creation.dictA,f)
個它打印:1,1,1,1,1,1....STOP
(當然,新行)
然後,當我試圖用這個加載它:
@staticmethod
def dictA():
with open('ddictA','rb') as f:
dict = pickle.load(f)
for i in dict.keys():
print len(i)
print 'STOP'
return dict
它返回:2,2,2,2,2,2,2,2...STOP
(當然,新行)
由於你可以看到它應該是相同的,但它不是......請問哪裏可以解決問題?
編輯:我試圖打印值,並意識到列表中的每個項目(列表是值)在該項目的末尾添加了'L',這是一個數字。
如果將寫入模式從'w +'更改爲'wb +',會發生什麼? (由於'w +'是文本模式,在Windows上它會將'\ n'映射到'\ r \ n'。) – unutbu 2014-11-02 12:44:18
@unutbu謝謝你的幫助!現在,它工作正常。 – 2014-11-02 12:47:02