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实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
Python3.遍历某文件夹提取特定文件名的实例
Apr 26 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
Python将string转换到float的实例方法
Jul 29 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
Python读取实时数据流示例
Dec 02 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Pytorch转tflite方式
May 25 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
python怎么删除缓存文件
Jul 19 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
用PHP编写PDF文档生成器
2006/10/09 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
python基础教程项目三之万能的XML
2018/04/02 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
中国跨境电商:Tomtop
2017/03/16 全球购物
美国在线工具商店:Acme Tools
2018/06/26 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
《鲸》教学反思
2016/02/23 职场文书