日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 1780 0

如果直接對(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文檔,該怎么保存 ,自己寫(xiě)了一個(gè)簡(jiǎn)單的小程序。
====================================================

            
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 這個(gè)庫(kù)大家說(shuō)的很多,官網(wǎng)看看,后面可以好好學(xué)習(xí)一下。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 阿拉善左旗| 广河县| 沾益县| 菏泽市| 肃南| 盘山县| 安福县| 海阳市| 屏山县| 黔西县| 云南省| 得荣县| 深圳市| 安岳县| 竹山县| 云梦县| 灵璧县| 和政县| 屯昌县| 枣庄市| 富民县| 莆田市| 万荣县| 合江县| 大庆市| 金沙县| 三河市| 文山县| 集贤县| 汝州市| 南陵县| 合阳县| 藁城市| 阳信县| 甘肃省| 张北县| 内丘县| 霍州市| 大埔区| 申扎县| 库尔勒市|