• 生成器案例,#采集日志


    生成器:
    只要在函数体中看到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函数,并传两个实参

  • 相关阅读:
    Rancher 中 Traefik 负载均衡 Initializing 状态
    【音视频】YUV、RGB视频像素处理
    Debian WSL 2 安装使用 Docker
    CentOS 7 切换 Java 版本到 Java 11
    阿里云 CentOS 8.2 停服后 yum / dnf 无法安装更新
    CentOS 8 Stream 报错处理 Faild to start Load Kernel Modules. Failed to insert 'ipmi_si': No such device
    System.getProperty()获取系统变量
    简单科普私钥、地址、助记词、Keystore的区别
    synchronized实现原理及锁升级过程
    H3C 策略路由原理介绍
  • 原文地址:https://www.cnblogs.com/dayle/p/10009634.html
Copyright © 2020-2023  润新知