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 相关文章推荐
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
如何使用python代码操作git代码
Feb 29 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
Python必须了解的35个关键词
Jul 16 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
python 爬取华为应用市场评论
May 29 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Python高效编程技巧
2013/01/07 Python
跟老齐学Python之类的细节
2014/10/13 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
小结Python的反射机制
2020/09/28 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
工程管理专业个人求职信范文
2013/12/07 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
2014庆六一活动方案
2014/03/02 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
北京天坛导游词
2015/02/12 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书