2011-10-02 57 views
1

我環視網(到目前爲止我發現pickle)作出解釋什麼,我做錯了最大的Python對象寫入()

我想寫一個非常大的數據結構(嵌套字典/列表)到文件。使用下面的代碼,我發現,這個問題可能是因爲所傳遞的字符串是太大:

f = open('/path/to/file' , 'w') 

try: 
f.write(str(dataStructure)) 
except: 
try: 
    f.write('ABC') 
except: 
    print 'Even smaller strings such as ABC did NOT print to the file' 
else: 
    print 'Smaller strings such as ABC DID print to the file' 

dataStructure字典裏的集團的大量信息,在這種情況下,大約10,000 - 100,000浮點值。我將全部內容轉儲到單個文件而不是保存在子文件中的原因是我想執行一個文件來加載它,而不是手動加載文件的幾十個子集。

在我開始保存每個派系之前(每個神經元都有幾個不同的傳入派系文件,例如對於神經元,我們正在查看20個索引文件),我在想如果文件大小實際上是問題,或者如果問題必須在別的地方。

感謝

+4

你有什麼錯誤? –

+2

是的,請發佈具體的例外,以便我們能給你更準確的幫助! –

+1

如果你沒有嘗試/除非你的大寫字母「寫大」並且該塊不起作用,你應該得到一個異常告訴你爲什麼它不起作用。 –

回答

4

我要去猜測,你的問題是您創建的字符串是太大,無法在內存中存在。對於那些大的東西,你應該一塊一塊寫到磁盤上。

你可以使用pickle,json,xml或其他應該正確處理的東西。

+0

謝謝,我要切換到泡菜。希望這會起作用。我從來沒有想過,它會太大而不能存在於記憶中。我只是假定操作系統會將它分頁,或者其他的東西。 – puk

+0

@puk,我相信這是限制在內存中的單個分配塊的大小。 –

+0

Pickle似乎工作,但是,保存的文件似乎加密(有成千上萬行的字符串'aF0.0097087378640778529'。我懷疑這就是爲什麼該文件是如此之大(6.7 GB)。現在我必須加載它看看它是否正確保存 – puk