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中用于计算指数的exp()方法
May 14 Python
python中zip()方法应用实例分析
Apr 16 Python
Python使用getpass库读取密码的示例
Oct 10 Python
python写入并获取剪切板内容的实例
May 31 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
python 统计文件中的字符串数目示例
Dec 24 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 Python
python内置进制转换函数的操作
Jun 02 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 星际争霸
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
PHP最常用的正则表达式
2017/02/13 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
javascript常用的方法分享
2015/07/01 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
Python中几种导入模块的方式总结
2017/04/27 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
pandas实现导出数据的四种方式
2020/12/13 Python
php优化查询foreach代码实例讲解
2021/03/24 PHP
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
广告学毕业生求职信
2014/01/30 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
模具专业自荐信
2014/05/29 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
关于Vue中的options选项
2022/03/22 Vue.js
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫