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 相关文章推荐
Golang与python线程详解及简单实例
Apr 27 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
Python虚拟环境项目实例
Nov 20 Python
python使用mysql的两种使用方式
Mar 07 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
python shutil文件操作工具使用实例分析
Dec 25 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
python tqdm用法及实例详解
Jun 16 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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
PHP 面向对象实现代码
2009/11/11 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
JavaScript的目的分析
2007/01/05 Javascript
jQuery中的常用事件总结
2009/12/27 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
Angular排序实例详解
2017/06/28 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
python 实现归并排序算法
2012/06/05 Python
Python之eval()函数危险性浅析
2014/07/03 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
社团活动策划书范文
2014/01/09 职场文书
发展部经理职责规定
2014/02/22 职场文书
学雷锋的心得体会
2014/09/04 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
安全员岗位职责
2015/02/10 职场文书
教师辞职书范文
2015/02/26 职场文书
工程款催款函
2015/06/24 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL