python大文件處理

????眾所周知微宝,python對(duì)文件的處理無非就是open或者file那一套添怔,打開關(guān)閉,讀取寫入徽龟,但是如果涉及的文件過于大了叮姑,直接read可能就直接將內(nèi)存撐爆了,所以這里也給大家提供一些方案來處理

1. Chunks——分塊處理

def read_in_chunks(filePath, chunk_size=1024*1024):
    """
    Lazy function (generator) to read a file piece by piece.
    Default chunk size: 1M
    You can set your own chunk size 
    """
    file_object = open(filePath)
    while True:
        chunk_data = file_object.read(chunk_size)
        if not chunk_data:
            break
        yield chunk_data
if __name__ == "__main__":
    filePath = './path/filename'
    for chunk in read_in_chunks(filePath):
        process(chunk) # <do something with chunk>

2. 分段式反復(fù)讀取

????小文件可以直接調(diào)用read方法顿肺,但是如果不能確定文件大小戏溺,可以反復(fù)調(diào)用read(size)處理,針對(duì)配置文件等文本類型也可以使用readlines讀韧雷稹(返回列表)

for line in f.readlines():
    process(line) # <do something with line>

3. with open()

????在使用python進(jìn)行大文件讀取時(shí),應(yīng)該讓系統(tǒng)來處理耕拷,使用最簡單的方式讼昆,交給解釋器,就管好自己的工作就行了骚烧。而with語句會(huì)自動(dòng)打開和關(guān)閉文件浸赫,包括拋出一個(gè)內(nèi)部塊異常。他將文件對(duì)象視為一個(gè)迭代器赃绊,會(huì)自動(dòng)的采用緩沖IO和內(nèi)存管理既峡,所以你不必?fù)?dān)心大文件。

#If the file is line based
with open(...) as f:
    for line in f:
        process(line) # <do something with line>

4. fileinput()

fileinput模塊可以對(duì)一個(gè)或多個(gè)文件中的內(nèi)容進(jìn)行迭代碧查、遍歷等操作运敢。

????該模塊的input()函數(shù)有點(diǎn)類似文件readlines()方法,但它是一個(gè)可迭代對(duì)象忠售,即每次只生成一行传惠,需要用for循環(huán)迭代。在碰到大文件的讀取時(shí)稻扬,無疑效率更高效卦方。用fileinput對(duì)文件進(jìn)行循環(huán)遍歷,格式化輸出泰佳,查找盼砍、替換等操作尘吗,非常方便。

import fileinput
for line in fileinput.input(['sum.log']):
    print line
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浇坐,一起剝皮案震驚了整個(gè)濱河市睬捶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吗跋,老刑警劉巖侧戴,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異跌宛,居然都是意外死亡酗宋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門疆拘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜕猫,“玉大人,你說我怎么就攤上這事哎迄』赜遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵漱挚,是天一觀的道長翔烁。 經(jīng)常有香客問我,道長旨涝,這世上最難降的妖魔是什么蹬屹? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮白华,結(jié)果婚禮上慨默,老公的妹妹穿的比我還像新娘。我一直安慰自己弧腥,他們只是感情好厦取,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著管搪,像睡著了一般虾攻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抛蚤,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天台谢,我揣著相機(jī)與錄音,去河邊找鬼岁经。 笑死朋沮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播樊拓,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纠亚,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了筋夏?” 一聲冷哼從身側(cè)響起蒂胞,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎条篷,沒想到半個(gè)月后骗随,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赴叹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鸿染,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乞巧。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涨椒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绽媒,到底是詐尸還是另有隱情蚕冬,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布是辕,位于F島的核電站囤热,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏获三。R本人自食惡果不足惜赢乓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望石窑。 院中可真熱鬧,春花似錦蚓炬、人聲如沸松逊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽经宏。三九已至,卻和暖如春驯击,著一層夾襖步出監(jiān)牢的瞬間烁兰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工徊都, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沪斟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓暇矫,卻偏偏與公主長得像主之,于是被迫代替她去往敵國和親择吊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 高階函數(shù):將函數(shù)作為參數(shù) sortted()它還可以接收一個(gè)key函數(shù)來實(shí)現(xiàn)自定義的排序,reversec參數(shù)可反...
    royal_47a2閱讀 687評(píng)論 0 0
  • 前言 ||| 第二章 使用ArcPy編寫腳本 Python支持大部分在其他語言中出現(xiàn)的編程結(jié)構(gòu)槽奕。在本章內(nèi)容中几睛,我們...
    muyan閱讀 90,038評(píng)論 10 55
  • 幫我改個(gè)論文格式,幫我改個(gè)簡歷模板粤攒,幫我找個(gè)韓劇資源 諸如此類吧 總喜歡讓男票幫我干一些其實(shí)我也能干所森,就想撒嬌偷懶...
    等朝陽888閱讀 178評(píng)論 0 0
  • 校區(qū):科學(xué)創(chuàng)想樂高機(jī)器人和平校區(qū) 時(shí)間:周日9:00-10:00 學(xué)員:金元寶,晶晶 任教老師:楊玲 教學(xué)目標(biāo): ...
    Happy00閱讀 549評(píng)論 0 0
  • 小兔白白四歲了夯接,每天都去幼兒園焕济。爸爸媽媽去上班,順路送寶貝去幼兒園钻蹬。白白可高興了吼蚁。 星期一,白白高高興興的去上學(xué)了...
    楊丁閱讀 361評(píng)論 0 0