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使用Tkinter显示网络图片的方法
Apr 24 Python
python控制台中实现进度条功能
Nov 10 Python
使用python实现省市三级菜单效果
Jan 20 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
Python进程间通信之共享内存详解
Oct 30 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python判断文件是否存在,不存在就创建一个的实例
Feb 18 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
python利用 keyboard 库记录键盘事件
Oct 16 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中OR与|| AND与&&的区别总结
2013/10/26 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
PHP中的替代语法介绍
2015/01/09 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
Vue header组件开发详解
2018/01/26 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
Python random模块常用方法
2014/11/03 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
python编程实现希尔排序
2017/04/13 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
PyQt5实现拖放功能
2018/04/25 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
python 字典的打印实现
2019/09/26 Python
python绘制规则网络图形实例
2019/12/09 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
Python日志器使用方法及原理解析
2020/09/27 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
CSS3实现swap交换动画
2016/01/19 HTML / CSS
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
园林系毕业生求职信
2014/06/23 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL