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中实现贪婪排名算法的教程
Apr 17 Python
python字符串连接方法分析
Apr 12 Python
python中set()函数简介及实例解析
Jan 09 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
Python上下文管理器全实例详解
Nov 12 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
Python中用xlwt制作表格实例讲解
Nov 05 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与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
VBScript版代码高亮
2006/06/26 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
Python中str.format()详解
2017/03/12 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
副总经理工作职责
2013/11/28 职场文书
九年级数学教学反思
2014/02/02 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
小学庆六一主持词
2015/06/30 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
Golang 结构体数据集合
2022/04/22 Golang