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

首頁(yè) > 編程 > Python > 正文

Python讀大數(shù)據(jù)txt

2019-11-25 16:51:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

如果直接對(duì)大文件對(duì)象調(diào)用 read() 方法,會(huì)導(dǎo)致不可預(yù)測(cè)的內(nèi)存占用。好的方法是利用固定長(zhǎng)度的緩沖區(qū)來(lái)不斷讀取文件內(nèi)容。即通過(guò)yield。

    在用Python讀一個(gè)兩個(gè)多G的txt文本時(shí),天真的直接用readlines方法,結(jié)果一運(yùn)行內(nèi)存就崩了。

    還好同事點(diǎn)撥了下,用yield方法,測(cè)試了下果然毫無(wú)壓力。咎其原因,原來(lái)是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ù)保存于一個(gè)新的 txt 文件中做余下的操作,雖然不知道這樣做有沒(méi)有必要但還是先小數(shù)據(jù)量測(cè)試一下吧。參考這個(gè)帖子:我想把一個(gè)list列表保存到一個(gè)Txt文檔,該怎么保存 ,自己寫了一個(gè)簡(jiǎn)單的小程序。
====================================================

import datetimeimport picklestart = datetime.datetime.now()print "start--%s" % (start)fileHandle = open ( 'train.txt' )file2 = open('s_train.txt','w') i = 1while ( i < 10000 ):  a = fileHandle.readline()  file2.write(''.join(a))   i = i + 1fileHandle.close() file2.close()print "done--%s" % ( datetime.datetime.now() - start)if __name__ == '__main__':  pass

====================================================
pickle 這個(gè)庫(kù)大家說(shuō)的很多,官網(wǎng)看看,后面可以好好學(xué)習(xí)一下。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 霍邱县| 清河县| 桃园市| 石渠县| 武安市| 海晏县| 米泉市| 新晃| 大庆市| 石台县| 纳雍县| 图片| 亚东县| 张家川| 宜良县| 临夏市| 文山县| 新干县| 太白县| 宜兴市| 高雄市| 贺州市| 垫江县| 红桥区| 广南县| 榆社县| 上饶市| 确山县| 视频| 祁门县| 宜君县| 南江县| 普宁市| 长沙县| 星子县| 凤山市| 牙克石市| 西吉县| 喀喇沁旗| 防城港市| 吉木乃县|