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)
分类:
Python自定义函数
标签:
Python自定义函数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现