python利用生成器读取大文件

def myreadlines(f, newline):
"""
利用生成器读取数据,并将数据按照指定的分隔符返回
:param f: 文件打开对象
:param newline: 指定的行分隔符
:return:
"""
# 定义一个中间变量来存储每次读取的数据
buff = ''
while True:
while newline in buff:
# 获取分隔符在读取的数据中的位置
pos = buff.index(newline)
# 将分隔符之前的数据返回
yield buff[:pos]
# 将数据变为分隔符以后的数据
buff = buff[pos+len(newline):]
# read()方法可以传入一个数字表示读取的字节数,不传入数字就读取全部的数据
current_text = f.read(4092)
if not current_text:
# 如果没有读取到数据表示已经读到文件结尾,将当前数据返回
yield buff
break
# 将读取到的数据记录到中间变量中
buff += current_text

with open('专项词.txt', encoding='utf-8') as f:
for i in myreadlines(f, ','):
print(i)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容