当前位置:首页>python>Python编程实战100例-8

Python编程实战100例-8

  • 2026-09-04 17:11:21
Python编程实战100例-8

点击蓝字关注我们

01

源代码

本案例旨在对大型文本文件进行读取操作,常规的大型文本文件在打开时往往会出现电脑卡顿的情况,使用该案例中的代码就可以实现对文本的快速读取操作,涉及到的python源代码如下:

def read_block(fname):    vsize=512    with open(fname,'r') as f:        while True:          content=f.read(vsize)            if content:                yield content            else:            returnif __name__=='__main__':    read_=read_block('listener.log')    i=0for vcontent in read_:   i+=1    print('第'+str(i)+'段文本内容:')    print(vcontent)

02

代码学习

1. 在大型文本读取的过程中,最长涉及到的就是yield语句,当所定义的函数中出现yield语句时,该函数就会转变为一个生成器,此时该函数必须通过next语句去调用,直接使用该函数则不会生效,此外每次遇到yield语句代码就会停下来并且返回一个值,直到再次的next调用才会继续执行后面的语句;

2. 需要注意的是send函数也可以实现next函数的功能,可以将数据传递给yiled语句并且是next语句为特殊的send函数,等价于send(none),对于常见的for循环,其内部自动隐藏调用next函数,所以常常见到在yield语句中使用for循环;

3.  上述代码首先观察到函数为生成器函数,设定了固定的512字符作为标准进行读取,当函数执行到yiled content语句时,停止,在主函数中有for函数遍历read_中的元素,并且隐藏的next函数会自动返回出这512个字符,使得函数继续运行下去;

4. 合理的使用yiled语句可以节省空间,尤其是需要使用大量的内存资源时很明显,并且可以提高代码的运行效率。

03

交个朋友

小伙伴们记得点“在看”和“赞”,谢谢大家!

最新文章

随机文章