2011-08-20 35 views
9

我在Python中打開了一個8   MB文件,因爲我想批量更改各種類型的文件名。我經過並將文件加載到一個字符串中,並使用字符串方法replace替換所有內容。然後我注意到只有一半的文件被替換;就好像Python沒有完全打開文件一樣。Python可以打開的文件的最大大小?

是否有某種字符串大小限制或最大文件大小限制,我必須在Python的範圍內發揮?

請參閱Python search and replace not replacing properly中的代碼。

我已更改爲建議的代碼。該緩衝區是一個超過150k行的8位HTML文件。替換代碼完美地工作;只是它並沒有取代所有的東西。或者,例如,一個令人痛苦的錯誤是:

當我試圖將字符串ff10替換爲FF-10時,它將更改爲FF-010。

+5

您可以打開一個文件與任何尺寸,但是當你閱讀整個文件,可發生MemoryOverflow爲32位系統只能分配2GB的每個進程,或者你可能沒有足夠的內存。 –

+3

顯示給你提供問題的代碼,這樣你就可以得到比僅僅告訴你你的猜測是否正確的答案更有用的答案。 :) –

+0

添加鏈接到我的代碼 – nobody

回答

14

不,對Python可以打開的文件的大小沒有可達的最大值。 8   MB is tiny現代條款。你在某個地方犯了一個錯誤。

定期將數據加載到內存中的人千兆字節。根據您計算機的RAM,無論是64位還是32位操作系統和處理器,實際的最大值可能在1   GB以上,然後再獲得MemoryError

作爲一項測試,我只是將一個35  MB文件加載到一個字符串中。這隻需要幾秒鐘。然後我將它寫回到一個文件中。花了一點時間。我然後散列文件。這兩個是相同的。

Python沒有大字符串的問題,直到達到RAM,操作系統或處理器的極限。

你說你「經歷和加載的文件轉換成字符串」 - 聽起來就像你可能已經犯了一個錯誤的首位。要將文件加載到字符串中,只需執行fileobject.read()。如果你以其他方式做了,那可能是問題所在。

+0

字符串呢? – nobody

+0

@沒有人看到我對你的評論問題 –

+0

我做了一個測試,並將結果添加到我的答案中。 – agf

相關問題