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 04 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
网站渗透常用Python小脚本查询同ip网站
May 08 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
实例讲解python中的序列化知识点
Oct 08 Python
Python闭包思想与用法浅析
Dec 27 Python
python 为什么说eval要慎用
Mar 26 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
python map比for循环快在哪
Sep 21 Python
变长双向rnn的正确使用姿势教学
May 31 Python
Python提取PDF指定内容并生成新文件
Jun 09 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
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
react-router中的属性详解
2017/06/01 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
Python内置函数dir详解
2015/04/14 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
python实现红包裂变算法
2016/02/16 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
使用numba对Python运算加速的方法
2018/10/15 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
大学毕业生自我评价
2015/03/02 职场文书
入党个人总结范文
2015/03/02 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
Feign调用传输文件异常的解决
2021/06/24 Java/Android
python自动化八大定位元素讲解
2021/07/09 Python
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang