Python讀大數(shù)據(jù)txt
如果直接對大文件對象調(diào)用 read() 方法,會導(dǎo)致不可預(yù)測的內(nèi)存占用。好的方法是利用固定長度的緩沖區(qū)來不斷讀取文件內(nèi)容。即通過yield。
在用Python讀一個兩個多G的txt文本時(shí),天真的直接用readlines方法,結(jié)果一運(yùn)行內(nèi)存就崩了。
還好同事點(diǎn)撥了下,用yield方法,測試了下果然毫無壓力。咎其原因,原來是readlines是把文本內(nèi)容全部放于內(nèi)存中,而yield則是類似于生成器。
代碼如下:
def open_txt(file_name):
with open(file_name,'r+') as f:
while True:
line = f.readline()
if not line:
return
yield line.strip()
調(diào)用實(shí)例:
for text in open_txt('aa.txt'):
print text
例二:
目標(biāo) txt 文件大概有6G,想取出前面1000條數(shù)據(jù)保存于一個新的 txt 文件中做余下的操作,雖然不知道這樣做有沒有必要但還是先小數(shù)據(jù)量測試一下吧。參考這個帖子:我想把一個list列表保存到一個Txt文檔,該怎么保存 ,自己寫了一個簡單的小程序。
====================================================
import datetime
import pickle
start = datetime.datetime.now()
print "start--%s" % (start)
fileHandle = open ( 'train.txt' )
file2 = open('s_train.txt','w')
i = 1
while ( i < 10000 ):
a = fileHandle.readline()
file2.write(''.join(a))
i = i + 1
fileHandle.close()
file2.close()
print "done--%s" % ( datetime.datetime.now() - start)
if __name__ == '__main__':
pass
====================================================
pickle 這個庫大家說的很多,官網(wǎng)看看,后面可以好好學(xué)習(xí)一下。
相關(guān)文章
使用python/pytorch讀取數(shù)據(jù)集的示例代碼
這篇文章主要為大家詳細(xì)介紹了使用python/pytorch讀取數(shù)據(jù)集的示例,文中的示例代碼講解詳細(xì),具有一定參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
ORM Django 終端打印 SQL 語句實(shí)現(xiàn)解析
這篇文章主要介紹了ORM Django 終端打印 SQL 語句實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
用map函數(shù)來完成Python并行任務(wù)的簡單示例
這篇文章主要介紹了用map函數(shù)來完成Python并行任務(wù)的簡單示例,多線程和多進(jìn)程編程的問題一直都是Python中的熱點(diǎn)和難點(diǎn),需要的朋友可以參考下2015-04-04
pandas apply 函數(shù) 實(shí)現(xiàn)多進(jìn)程的示例講解
下面小編就為大家分享一篇pandas apply 函數(shù) 實(shí)現(xiàn)多進(jìn)程的示例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
使用python的Flask框架進(jìn)行上傳和下載文件詳解
這篇文章主要介紹了使用python的Flask框架進(jìn)行上傳和下載文件詳解,Flask是一個使用Pyhton編寫的輕量級Web應(yīng)用框架,工具包采用Werkzeug,模板引擎則使用Jinja2,是目前十分流行的web框架,需要的朋友可以參考下2023-07-07
python測試開發(fā)django之使用supervisord?后臺啟動celery?服務(wù)(worker/beat)
Supervisor是用Python開發(fā)的一個client/server服務(wù),是Linux/Unix系統(tǒng)下的一個進(jìn)程管理工具,不支持Windows系統(tǒng),這篇文章主要介紹了python測試開發(fā)django之使用supervisord?后臺啟動celery?服務(wù)(worker/beat),需要的朋友可以參考下2022-07-07

