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 Django连接MySQL数据库做增删改查
Nov 07 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
python实现折半查找和归并排序算法
Apr 14 Python
使用Python的turtle模块画图的方法
Nov 15 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
python实现朴素贝叶斯分类器
Mar 28 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
基于Python列表解析(列表推导式)
Jun 23 Python
详解Django配置优化方法
Nov 18 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
python实现批量转换图片为黑白
Jun 16 Python
一文搞懂如何实现Go 超时控制
Mar 30 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
单位速度在实战中的运用
2020/03/04 星际争霸
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
Python中的pass语句使用方法讲解
2015/05/14 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
对pandas中Series的map函数详解
2018/07/25 Python
python实现自动化上线脚本的示例
2019/07/01 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
高二英语教学反思
2014/01/19 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
2014年民政工作总结
2014/11/26 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
使用refresh_token实现无感刷新页面
2022/04/26 Javascript