• Python3用gevent写个文件字符串查找器


    [本文出自天外归云的博客园]

    1、递归遍历目录下所有文件并通过finder函数定位指定格式字符串

    2、用来查找字符串的finder函数是自己定义的,这里定义了一个ip_port_finder通过正则表达式查找ip:port格式(粗匹配:数字.数字.数字.数字:数字)的字符串

    3、用gevent来实现协程并发完成耗时任务

    代码如下:

    # -*- coding: utf-8 -*-
    import re
    from os.path import join
    from os import walk
    from gevent import monkey
    import gevent
    
    monkey.patch_all()
    
    
    def ip_port_finder(str: str) -> bool:
        pattern = re.compile(r".+d+.d+.d+.d+:d+")
        matchObj = pattern.match(str)
        if matchObj:
            print("------")
            print(f"发现目标:{matchObj.group(0)}")
            return True
        else:
            return False
    
    
    def find_in_file(file_path, finder):
        with open(file_path, "r", encoding="utf-8", errors='ignore') as f:
            for (num, value) in enumerate(f):
                if finder(value):
                    print(f"文件路径:{file_path}")
                    print(f"所在行数:{num}")
    
    
    find_in_path_recursively = lambda path, finder: gevent.joinall(
        [gevent.spawn(find_in_file, join(root, file_name), finder) for root, directories, f_names in walk(path) for
         file_name in f_names])
    
    if __name__ == '__main__':
        path = "E:dev_codesxxx"
        find_in_path_recursively(path, ip_port_finder)

    参考文章:

    Python多任务实现之协程并发下载多图片

  • 相关阅读:
    .Net常见笔试题
    冒泡排序算法 C#版
    Bundle捆绑压缩技术
    异步Ajax
    HtmlHelper总结
    HtmlHelper的扩展分页方法
    WCF
    程序猿值得看的几个技术网站(记录)
    Struts2和SpringMVC的区别
    nginx配置文件作用介绍
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/9392406.html
Copyright © 2020-2023  润新知