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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
python使用KNN算法手写体识别
Feb 01 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
python判断文件是否存在,不存在就创建一个的实例
Feb 18 Python
Python简单处理坐标排序问题示例
Jul 11 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
Python定时发送天气预报邮件代码实例
Sep 09 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
Python3.9.1中使用match方法详解
Feb 08 Python
python 实现IP子网计算
Feb 18 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
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
js微信分享API
2020/10/11 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
Python中文件遍历的两种方法
2014/06/16 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
python多进程实现进程间通信实例
2017/11/24 Python
python机器学习之神经网络(三)
2017/12/20 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
给儿子的表扬信
2014/01/15 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
投资意向书
2014/07/30 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
通知的格式范文
2015/04/27 职场文书
工程合作意向书范本
2015/05/09 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
Win11软件图标固定到任务栏
2022/04/19 数码科技