# 用生成器函数 读取大文件
# 前提: 了解f.read()是一个生成器;
# 生成器yield的执行时机
# 文件很大,而且只有1行时,就不能用f.readline和f.readlines
read, readline, readlines的区别:
https://www.cnblogs.com/hanggegege/p/5926549.html
下面定义一个生成器函数:
def myreadlines(f, newline):
'''
f 文件对象
newline 分隔符
'''
buf = ""
while True:
while newline in buf: # 读取的内容包含了 分隔符
pos = buf.index(newline)
yield buf[:pos]
buf = buf[pos+len(分隔符):] # yield出去的数据 要从buf中删除
chunk = f.read(4096) # 每次读取4096长度的数据
# 边界条件处理,当读取不到内容的时候,表示文件已经全部读完了
if not chunk:
yield buf
break
# 将每次读取的内容拼接到 buf字符串中
buf = buf + chunk
with open('testfile.txt') as f:
for line in myreadlines(f, '分隔符'):
print(line)
Python 生成器函数读取大文件
原创
©著作权归作者所有:来自51CTO博客作者J4ck0r的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python列表生成器与生成器
python列表生成器与生成器
python 列表生成器 生成器 -
文件名生成器python 文件名生成器
目录bat批处理脚本定时关机 bat批处理脚本批量提取文件名 文件列表生成器推荐正文: 今天有学员提问到了怎么批量提取文件名,我们今天就可以大家介绍一些简单的方法。我们主要利用bat语句与excel来解决今天的问题。 首先大家来理解一下bat。一下贴一段百度百科的解释: 批处理(Batch),也称为
文件名生成器python bat批处理 批量提取文件名 ENVI ArcGIS批处理