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 自动提交和抓取网页
Jul 13 Python
python中的五种异常处理机制介绍
Sep 02 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
python实现日志按天分割
Jul 22 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
详细分析Python垃圾回收机制
Jul 01 Python
简单了解Django项目应用创建过程
Jul 06 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
python blinker 信号库
May 04 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读取3389的脚本
2014/05/06 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
tornado框架blog模块分析与使用
2013/11/21 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
物业管理毕业生的自我评价
2014/02/17 职场文书
三方合作协议书范本
2014/04/18 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
社区禁毒工作方案
2014/06/02 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
第一军规观后感
2015/06/12 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android