python讀取大檔案

2021-09-13 16:04:31 字數 1191 閱讀 3572

最近在學習python的過程中接觸到了python對檔案的讀取。python讀取檔案一般情況是利用open()函式以及read()函式來完成:

f = open(filename,'r')

f.read()

這種方法讀取小檔案,即讀取遠遠大小小於記憶體的檔案顯然沒有什麼問題。但是如果是將乙個10g大小的日誌檔案讀取,即檔案大於記憶體的大小,這麼處理就有問題了,會造成memoryerror … 也就是發生記憶體溢位。

發生這種錯誤的原因在於,read()方法執行操作是一次性的都讀入記憶體中,顯然檔案大於記憶體就會報錯。

解決方法:

這裡發現跟read()類似的還有其他的方法:read(引數)、readline()、readlines()

(1)read(引數):通過引數指定每次讀取的大小長度,這樣就避免了因為檔案太大讀取出問題。

while true:

block = f.read(1024)

if not block:

break

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

while true:

line = f.readline()

if not line:

break

(3)readlines():讀取全部的行,構成乙個list,通過list來對檔案進行處理,但是這種方式依然會造成memoyerror

for line in f.readlines():

....

以上基本分析了python中讀取檔案的方法,但是總感覺不能達到python中所強調的優雅,後來發現了還有下面的解決方法:

pythonic(我理解的是很python的python**)的解決辦法:

with open(filename, 'r') as flie:

for line in file:

....

對可迭代物件file進行迭代,這樣會自動的使用buffered io以及記憶體管理,這樣就不必擔心大檔案問題了。

後來,又發現了乙個模組:linecache,這個模組也可以解決大檔案讀取的問題,並且可以指定讀取哪一行,

text = linecache.getline(filename, 2)

python 讀取大檔案

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

python讀取大檔案 python讀取大檔案

python讀取檔案對各列進行索引 可以用readlines,也可以用readline,如果是大檔案一般就用readlined a in open testfile.txt r for line in a in columnssplit line.rstrip split d columnsspli...

python 大檔案的讀取

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