熱線電話:13121318867

登錄
首頁精彩閱讀利用Python讀取文件的四種不同方法比對
利用Python讀取文件的四種不同方法比對
2018-02-18
收藏

利用Python讀取文件的四種不同方法比對

大家都知道Python 讀文件的方式多種多樣,但是當需要讀取一個大文件的時候,不同的讀取方式會有不一樣的效果。下面就來看看詳細的介紹吧。

場景

逐行讀取一個 2.9G 的大文件

CPU i7 6820HQ

RAM 32G

方法

對每一行的讀取進行一次分割字符串操作

以下方法都使用 with…as 方法打開文件。

with 語句適用于對資源進行訪問的場合,確保不管使用過程中是否發生異常都會執行必要的“清理”操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等。

方法一 最通用的讀文件方式    
with open(file, 'r') as fh:
 for line in fh.readlines():
 line.split("|")

運行結果: 耗時 15.4346568584 秒

系統監視器中顯示內存從 4.8G 一下子飆到了 8.4G, fh.readlines() 將讀取的所有行數據存到內存,這種方法適合小文件。

方法二
with open(file, 'r') as fh:
 line = fh.readline()
 while line:
 line.split("|")

運行結果: 耗時 22.3531990051 秒

內存幾乎沒有變化,因為內存中只存取一行的數據,但是時間明顯比上一次的長,對于進一步處理數據來說效率不高。

方法三    
with open(file) as fh:
 for line in fh:
 line.split("|")

運行結果: 耗時 13.9956979752 秒

內存幾乎沒有變化,速度也比方法二快。

for line in fh 將文件對象 fh 視為可迭代的,它自動使用緩沖的 IO 和內存管理,因此您不必擔心大文件。這是很 pythonic 的方式!
方法四 fileinput 模塊    
for line in fileinput.input(file):
 line.split("|")

運行結果: 耗時 26.1103110313 秒

內存增加了 200-300 MB,速度是以上最慢的。

總結

以上方法僅供參考,公認的大文件讀取方法還是三最好。但是具體情況還是要根據機器的性能、處理數據的復雜度。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢