強悍的Python讀取大檔案的解決方案

2022-06-07 21:03:14 字數 928 閱讀 2015

這是一道著名的 python 面試題,考察的問題是,python 讀取大檔案和一般規模的檔案時的區別,也即哪些介面不適合讀取大檔案。

1. read() 介面的問題

f =open(filename, 'rb')

f.read()

我們來讀取 1 個 nginx 的日至檔案,規模為 3gb 大小。read() 方法執行的操作,是一次性全部讀入記憶體,顯然會造成:

memoryerror

也即會發生記憶體溢位。

2. 解決方案:轉換介面

(1)readlines() :讀取全部的行,構成乙個 list,實踐表明還是會造成記憶體的問題;

forline inf.reanlines():

(2)readline():每次讀取一行,

(3)read(1024):過載,指定每次讀取的長度

3. 真正 pythonic 的方法

真正 pythonci 的方法,使用 with 結構:

對可迭代物件 f,進行迭代遍歷:for line in f,會自動地使用緩衝io(buffered io)以及記憶體管理,而不必擔心任何大檔案的問題。

there should be one – and preferably only one – obvious way to do it.

強悍的 Python 讀取大檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!python 環境下檔案的讀取問題,請參見拙文 python 基礎 檔案 這是一道著名的 python 面試題,考察的問題是,python 讀取大檔案和一般規模的檔案時的區別,也即哪些介面不適合讀取大檔案。f open filename,rb f....

強悍的Python讀取大檔案的解決方案

python 環境下檔案的讀取問題,請參見拙文 python基礎之檔案讀取的講解 這是一道著名的 python 面試題,考察的問題是,python 讀取大檔案和一般規模的檔案時的區別,也即哪些介面不適合讀取大檔案。1.read 介面的問題 f open filename,rb f.read 我們來讀...

python 大檔案的讀取

在這裡插入 片很久以前做數學建模的時候面臨了一回大檔案的讀取問題,當時沒有什麼程式設計經驗就使用如下的 進行了讀取。with open filename,rb as fp for line in fp.readlines do something line 這種 在檔案比較小時倒也沒有太大影響,但是...