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

2022-10-04 11:45:15 字數 914 閱讀 4516

python 環境下檔案的讀取問題,請參見拙文 python基礎之檔案讀取的講解

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

1. read() 介面的問題

f = open(filename, 'rb')

f.read()

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

memoryerror

...也即會發生記憶體溢位。

2. 解決方案:轉換介面

for line in f.reanlines():

...while true:

line = f.readline()

if not line:

break

while true:

block = f.read(1024)

if not block:

break

3. 真正 pythonic 的方法

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

with op程式設計客棧en(filename, 程式設計客棧'rb') as f:

for line in f:

程式設計客棧 the line>

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

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

reference

how to read large file, line by line in python

總結

強悍的 Python 讀取大檔案

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

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

這是一道著名的 python 面試題,考察的問題是,python 讀取大檔案和一般規模的檔案時的區別,也即哪些介面不適合讀取大檔案。1.read 介面的問題 f open filename,rb f.read 我們來讀取 1 個 nginx 的日至檔案,規模為 3gb 大小。read 方法執行的操作...

python 大檔案的讀取

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