Python基于geven如何實(shí)現(xiàn)文件字符串查找器的方法-創(chuàng)新互聯(lián)

小編給大家分享一下Python基于geven如何實(shí)現(xiàn)文件字符串查找器的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、施甸ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的施甸網(wǎng)站制作公司

1、遞歸遍歷目錄下所有文件并通過finder函數(shù)定位指定格式字符串

2、用來查找字符串的finder函數(shù)是自己定義的,這里定義了一個(gè)ip_port_finder通過正則表達(dá)式查找ip:port格式(粗匹配:數(shù)字.數(shù)字.數(shù)字.數(shù)字:數(shù)字)的字符串

3、用gevent來實(shí)現(xiàn)協(xié)程并發(fā)完成耗時(shí)任務(wù)

代碼如下:

# -*- 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"發(fā)現(xiàn)目標(biāo):{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"所在行數(shù):{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)

新聞標(biāo)題:Python基于geven如何實(shí)現(xiàn)文件字符串查找器的方法-創(chuàng)新互聯(lián)
鏈接地址:http://bm7419.com/article36/didpsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、Google、定制開發(fā)、建站公司移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)