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根据经纬度计算距离示例
Feb 16 Python
在Python的循环体中使用else语句的方法
Mar 30 Python
python中__call__内置函数用法实例
Jun 04 Python
Python对列表中的各项进行关联详解
Aug 15 Python
python实现内存监控系统
Mar 07 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
python中的colorlog库使用详解
Jul 05 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
Python无损压缩图片的示例代码
Aug 06 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
python+opencv实现目标跟踪过程
Jun 21 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中实现记住密码自动登录的代码
2011/03/02 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
js post提交调用方法
2014/02/12 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
python自动zip压缩目录的方法
2015/06/28 Python
小小聊天室Python代码实现
2016/08/17 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Python函数生成器原理及使用详解
2020/03/12 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
New delete 与malloc free 的联系与区别
2013/02/04 面试题
linux下进程间通信的方式
2014/12/23 面试题
旅游网创业计划书
2014/01/31 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
预备党员公开承诺书
2014/05/28 职场文书
宣传标语大全
2014/07/01 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
党纪处分决定书
2015/06/24 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android