python读取大文件

我们在处理小的文本文件时一般使用.read()、.readline() 和 .readlines()方法,但是当我们的文件有2个G,5个G甚至更大时,用这些方法内存就直接爆掉了。

对一般文件,如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便。

读取大文件方法:

一、Read In 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>

二、Using with open()

with语句打开和关闭文件,包括抛出一个内部块异常。for line in f文件对象f视为一个迭代器,会自动的采用缓冲IO和内存管理,所以你不必担心大文件。

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

三、fileinput处理

import fileinput
for line in fileinput.input(['sum.log']):
    print line

参考:
http://www.zhidaow.com/post/python-read-big-file
https://www.cnblogs.com/wulaa/p/7852592.html

f = open(filename,'r')
f.read()

#1:
while True:
    block = f.read(1024)
    if not block:
        break


#2:
while True:
    line = f.readline()
    if not line:
        break

#3:
for line in f.readlines():
    pass


#4:
with open(filename,'r') as file:
    for line in file:
        pass

#5:the second line
import linecache
txt = linecache.getline(filename,2)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在工作中,我们常会遇到一个很大的文件(通常为log文件),当出现问题的时候,我们想使用程序来处理日志文件来对问题进...
    freelamb阅读 1,398评论 0 0
  • 方法1: 方法2: 推荐方法2,方法2不会把整个文件读入内存,是一种迭代器的读取方法。方法1,会把整个文件load...
    geofer阅读 276评论 0 0
  • 对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以...
    一木之夏阅读 200评论 0 0
  • 01 在职场里,不喜欢表现自己偏于内向的人常常在别人尤其是一些领导眼中属于被忽视或者被看不起群体,甚至是当着许多同...
    夜语山林阅读 664评论 0 3
  • 1 我叫小米,是一只黄色的拉布拉多导盲犬,我的主人妈妈名叫夏巧芸,她是一个很漂亮的白富美,即使不化妆,她的容貌也可...
    衫衫一梦阅读 906评论 15 7

友情链接更多精彩内容