您好,登錄后才能下訂單哦!
小編給大家分享一下Python基于geven如何實現(xiàn)文件字符串查找器的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
1、遞歸遍歷目錄下所有文件并通過finder函數(shù)定位指定格式字符串
2、用來查找字符串的finder函數(shù)是自己定義的,這里定義了一個ip_port_finder通過正則表達式查找ip:port格式(粗匹配:數(shù)字.數(shù)字.數(shù)字.數(shù)字:數(shù)字)的字符串
3、用gevent來實現(xiàn)協(xié)程并發(fā)完成耗時任務
代碼如下:
# -*- 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)目標:{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)
看完了這篇文章,相信你對Python基于geven如何實現(xiàn)文件字符串查找器的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。