美文网首页
python中的生成器

python中的生成器

作者: 写出你我 | 来源:发表于2018-11-23 16:19 被阅读0次

            什么是生成器:只要在函数体内出现yield关键字,那么再执行函数就不会执行函数代码,会得到一个结果,该结果就是生成器                                                                                                     生成器就是迭代器

            yield的功能                                                                                                                                      1.yield为我们提供了一种自定义迭代器对象的方法                                                                          2.yield与return的区别:1.yield可以返回多个值 2.函数暂停和再继续是由yield帮我们保存的

            设计一个查看实时更新文件的更新状态,比如日志文件

    import time  

    def tail(filepath):                      #定义一个查看文件的函数

        with open(filepath, 'rb') as f:      #打开形参为filepath

            f.seek(0,2)                      #把光标移动到末尾

            while True:                      #循环监控日志

                data = f.readline()          #读取文件末尾

                if data:                    #加入有数据就用yield返回

                    yield data

                else:                        #否则就睡眠0.05秒

                    time.sleep(0.05)

    def grep(file, k):                      #定义过滤关键字函数

        for i in tail(file):                #循环生成器中的数据

            if k in i.decode('utf-8'):      #因为是用二进制读取方式,所以需要解码显示

                print(i.decode('utf-8'))

    grep('a.txt', '500')                    #监控a.txt最新日志,并过滤500的错误代码

    相关文章

      网友评论

          本文标题:python中的生成器

          本文链接:https://www.haomeiwen.com/subject/kowjqqtx.html