码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-07-30 21:31:17      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:def   博客   数字   blank   一个   imp   odi   tor   http   

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

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_codes\xxx"
    find_in_path_recursively(path, ip_port_finder)

 

参考文章:

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

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

标签:def   博客   数字   blank   一个   imp   odi   tor   http   

原文地址:https://www.cnblogs.com/LanTianYou/p/9392406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!