在python中逐行讀取大檔案 和 單行檔案

2021-09-12 12:44:35 字數 849 閱讀 7984

在我們日常工作中,難免會有處理日誌檔案的時候,當檔案小的時候,基本不用當心什麼,直接用file.read()或readlines()就可以了,但是如果是將乙個10g大小的日誌檔案讀取,即檔案大於記憶體的大小,這麼處理就有問題了,會將整個檔案載入到記憶體中從而造成memoryerror … 也就是發生記憶體溢位。

下面分享幾個解決辦法:

withopen('file_name','r') asfile:

forlineinfile:

printline

優點:缺點:每一行的資料內容不能大於記憶體大小,否則就會造成memoryerror

正常情況使用上面這種方式就可以了,but,如果遇到整個檔案只有一行,而且按照特定的字元進行分割,上面這種方式則不行了,這時候yield就非常有用了。

舉個栗子,log的形式是這樣子的。

優點:不在限制每行資料的大小,即使整個大檔案只有一行。

缺點:速度比上面這種方式要慢。

解析一下:

所以我們需要使用那種方式呢,一般來說使用用第一種就可以了。碰到只有一行的資料,而且資料特別大的,就要考慮一下你是不是得罪那個程式設計師了,故意給你這樣乙個檔案。

日行一善, 日寫一撰

在python中逐行讀取大檔案

在我們日常工作中,難免會有處理日誌檔案的時候,當檔案小的時候,基本不用當心什麼,直接用file.read 或readlines 就可以了,但是如果是將乙個10g大小的日誌檔案讀取,即檔案大於記憶體的大小,這麼處理就有問題了,會將整個檔案載入到記憶體中從而造成memoryerror 也就是發生記憶體溢...

python 讀取大檔案

以前一直沒有關注過python讀取大檔案的問題,因為一直都是順順暢暢地讀取了檔案。直到今天有人問我python怎麼讀取檔案出現了記憶體不足的錯誤?我才發現原來大檔案 gb級別 的讀取和普通檔案的讀取是不一樣的。下面介紹三種我親測可用的方法。這裡的檔案型別可以是txt,dat等型別的檔案。用read ...

python讀取大檔案

最近在學習python的過程中接觸到了python對檔案的讀取。python讀取檔案一般情況是利用open 函式以及read 函式來完成 f open filename,r f.read 這種方法讀取小檔案,即讀取遠遠大小小於記憶體的檔案顯然沒有什麼問題。但是如果是將乙個10g大小的日誌檔案讀取,即...