Python基于gevent实现文件字符串查找器


Posted in Python onAugust 11, 2020

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 相关文章推荐
Python入门篇之条件、循环
Oct 17 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
python直接获取API传递回来的参数方法
Dec 17 Python
Django之无名分组和有名分组的实现
Apr 16 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
python实现tail -f 功能
Jan 17 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
jupyter实现重新加载模块
Apr 16 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
详解在OpenCV中如何使用图像像素
Mar 03 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 Python
Python3如何实现Win10桌面自动切换
Aug 11 #Python
Python3如何使用多线程升程序运行速度
Aug 11 #Python
使用Python pip怎么升级pip
Aug 11 #Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 #Python
Python 代码调试技巧示例代码
Aug 11 #Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 #Python
Python函数递归调用实现原理实例解析
Aug 11 #Python
You might like
ADODB类使用
2006/11/25 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
js中日期的加减法
2015/05/06 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
Python 文件处理注意事项总结
2017/04/10 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
Django app配置多个数据库代码实例
2019/12/17 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
见习期自我鉴定
2013/11/07 职场文书
先进典型事迹材料
2014/12/29 职场文书
客服专员岗位职责
2015/02/10 职场文书
《静夜思》教学反思
2016/02/17 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP