国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 01:32:32
字體:
供稿:網(wǎng)友

前言

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

場景

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

CPU i7 6820HQ RAM 32G

方法

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

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

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

方法一 最通用的讀文件方式

with open(file, 'r') as fh: for line in fh.readlines(): line.split("|")

運行結(jié)果: 耗時 15.4346568584 秒

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

方法二

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

運行結(jié)果: 耗時 22.3531990051 秒

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

方法三

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

運行結(jié)果: 耗時 13.9956979752 秒

內(nèi)存幾乎沒有變化,速度也比方法二快。

for line in fh 將文件對象 fh 視為可迭代的,它自動使用緩沖的 IO 和內(nèi)存管理,因此您不必擔心大文件。這是很 pythonic 的方式!

方法四 fileinput 模塊

for line in fileinput.input(file): line.split("|")

運行結(jié)果: 耗時 26.1103110313 秒

內(nèi)存增加了 200-300 MB,速度是以上最慢的。

總結(jié)

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

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长治县| 招远市| 含山县| 铁岭市| 沾化县| 黔江区| 准格尔旗| 德格县| 保德县| 余江县| 宁强县| 大余县| 吉安县| 家居| 右玉县| 吐鲁番市| 丹棱县| 遂昌县| 即墨市| 青阳县| 温州市| 大田县| 怀来县| 德清县| 星子县| 岚皋县| 平谷区| 江西省| 东乡县| 即墨市| 启东市| 饶阳县| 伊宁县| 元氏县| 台中县| 乌兰察布市| 新竹县| 清流县| 巩义市| 措美县| 巨鹿县|