Read a large file with python
python讀取大文件
- 文件可以自動關閉
- 異??梢栽趙ith塊內處理
最大的優點:對可迭代對象 f,進行迭代遍歷:for line in f,會自動地使用緩沖IO(buffered IO)以及內存管理,而不必擔心任何大文件的問題。
There should be one – and preferably only one – obvious way to do it.
如果想對每次迭代讀取的內容進行更細粒度的處理,可以使用yield生成器來讀取大文件
def readInChunks(file_obj, chunkSize=2048):"""Lazy function to read a file piece by piece. Default chunk size: 2kB."""while True:data = file_obj.read(chunkSize)if not data:breakyield dataf = open('bigFile')for chunk in readInChunks(f):do_something(chunk)f.close()在工作中的日常: 用戶信息,log日志緩存,等都是大文件
補充:linecache模塊
當讀取一個文件的時候,python會嘗試從緩存中讀取文件內容,優化讀取速度,提高效率,減少了I/O操作
linecache.getline(filename, lineno) 從文件中讀取第幾行,注意:包含換行符
linecache.clearcache() 清除現有的文件緩存
linecache.checkcache(filename=None) 檢查緩存內容的有效性,可能硬盤內容發生改變,更新了,如果沒有參數,將檢查緩存中的所有記錄(entries)
題目:
現給一個文件400M(該文件是由/etc/passwd生成的),統計其中root字符串出現的次數
注:有時候這個程序比c,shell快10倍,原因就是,python會讀取cache中的數據,使用緩存在內部進行優化,減少i/o,提高效率
References : How to read a large file
轉載于:https://www.cnblogs.com/panlq/p/10618852.html
總結
以上是生活随笔為你收集整理的Read a large file with python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis数据结构:字典(hash表)
- 下一篇: Codeforces 500