Python学习笔记7:yield生成迭代器

yield生成迭代器

yield生成迭代器是将一个函数通过yield方法将其转化为迭代器,其中yield后面的值为迭代器每执行一次next返回的值

使用迭代器模仿Linux终端中 tail -f filename.txt |grep 'error' |grep '404'命令

import time


# 读取文件每一行,使用yield程序制作为迭代器
def tail(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        f.seek(0, 1)  # 将文件指针指向最后一个
        
        # 让文件死循环,不断读取新增内容
        while True:
            line = f.readline()
            
            # 如果line非空,说明是新内容,返回
            if line:
                yield line 
            # 如果为空,说明没有新内容,这是为了降低循环次数沉睡1秒
            else:
                time.sleep(1)


# 遍历lines中的每一行中是否含有string,将其作为第二个迭代器
def grep(lines, string):
    # 遍历lines迭代器
    for each_line in lines:
        if string in each_line:
            yield each_line
            

path = '123.txt'
t = tail(path)
s = '404'
g = grep(t, s)

for i in g:
    print(i)
posted @   戴维德  阅读(200)  评论(0编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
点击右上角即可分享
微信分享提示