生成器案例,#采集日志

 

生成器:
只要在函数体中看到yield,那么这个函数就是生成器。
yield功能:
1:为我们提供了一种自定义迭代器对象的方法
2:yield其实也是一种返回值,他和return的区别就是:他可以返回多个值。并且函数暂停和继续是有yield帮我们保存的。

 

#采集日志,并按关键信息检索,然后将收集到的信息写入另一个文件。


import time                                    #调用时间模块
def tail(filename):                             #定义生成器
    with open(filename,'r') as f:           #打开文件,读取文件,给文件起个别名是f
        f.seek(0,2)                             #将文件中的光标移动到最后
        while True:                             #死循环
            qwe = f.readline()                 #从上到下读取文件然后赋值给qwe
            if qwe:                             #如果qwe不为空,有值
                yield qwe                       #那么就返回qwe的值
            else:                                #否则
                time.sleep(0.05)               #停0.05秒在运行   
asd = tail('a.txt')                             #将函数的返回值赋给asd变量
def grep(filename,err):                        #定义一个过滤的函数
    for i in asd:                              #遍历tail函数中的返回值
        if err in i:                        #判断:按关键词收集日志,查看返回值是否符合要求
            with open(filename, 'a') as d:     #打开文件,设置追加模式
                d.writelines(i)                 #将这条符合条件的日志写在s.txt中
grep('s.txt','4')                              #调用grep函数,并传两个实参

转载于:https://www.cnblogs.com/dayle/p/10009634.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值