常用方式一:
上述方式不会一次性读取整个文件,类似buffer机制。
对可迭代对象 f,进行迭代遍历: for line in f ,会自动地使用缓冲IO(buffered IO)以及内存管理。
方式二:
自己实现类似于buffer:
== 不适合的方法 ==
1. Chunks——分块处理
2. 分段式反复读取
3. with open()
4. fileinput()
该模块的input()函数有点类似文件readlines()方法,但它是一个可迭代对象,即每次只生成一行,需要用for循环迭代。在碰到大文件的读取时,无疑效率更高效。用fileinput对文件进行循环遍历,格式化输出,查找、替换等 *** 作,非常方便。
如果有个很大的文件,几十G?,需要每次读取一部分,处理后再读取剩余部分。with open as f 已经从内部处理难点,使用 for line in f 以迭代器的形式每次读取一行,不会有内存问题。
下面程序的思路是用一个列表存放读取到的数据,达到长度后就开始处理,处理完就清空列表,继续执行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)