〖Python自动化办公篇④〗- 文件自动化管理 - 文件查找与基于文件内容查找文件
| 🎉 隱約雷鳴,陰霾天空。 🎉 |
| 🎉 但盼風雨來,能留你在此。 🎉 |
前言:
? 作者簡介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全棧 賦能的博主 ?
🏆 CSDN博客專家認證、新星計劃第三季全棧賽道 top_1 、華為云享專家、阿里云專家博主 🏆
📫 如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步👀
💬 人生格言:優于別人,并不高貴,真正的高貴應該是優于過去的自己。💬
🔥 如果感覺博主的文章還不錯的話,還請👍關注、點贊、收藏三連支持👍一下博主哦
| 🔥Python全棧白皮書🔥 | 零基礎入門篇 | 以淺顯易懂的方式輕松入門,讓你徹底愛上Python的魅力。 |
| 語法進階篇 | 主要圍繞多線程編程、正則表達式學習、含貼近實戰的項目練習 。 | |
| 自動化辦公篇 | 實現日常辦公軟件的自動化操作,節省時間、提高辦公效率。 | |
| 自動化測試實戰篇 | 從實戰的角度出發,先人一步,快速轉型測試開發工程師。 | |
| 數據庫開發實戰篇 | 更新中 | |
| 爬蟲入門與實戰 | 更新中 | |
| 數據分析篇 | 更新中 | |
| 前端入門+flask 全棧篇 | 更新中 | |
| django+vue全棧篇 | 更新中 | |
| 拓展-人工智能入門 | 更新中 | |
| 網絡安全之路 | 踩坑篇 | 記錄學習及演練過程中遇到的坑,便于后來居上者 |
| 網安知識掃盲篇 | 三天打魚,不深入了解原理,只會讓你成為腳本小子。 | |
| vulhub靶場漏洞復現 | 讓漏洞復現變得簡單,讓安全研究者更加專注于漏洞原理本身。 | |
| shell編程篇 | 不涉及linux基礎,最終案例會偏向于安全加固方向。 [待完結] | |
| WEB漏洞攻防篇 | 2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈 | |
| 滲透工具使用集錦 | 2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈 | |
| 點點點工程師 | 測試神器 - Charles | 軟件測試數據包抓包分析神器 |
| 測試神器 - Fiddler | 一文學會 fiddle ,學不會倒立吃翔,稀得! | |
| 測試神器 - Jmeter | 不僅是性能測試神器,更可用于搭建輕量級接口自動化測試框架。 | |
| RobotFrameWork | Python實現的自動化測試利器,該篇章僅介紹UI自動化部分。 | |
| Java實現UI自動化 | 文檔寫于2016年,Java實現的UI自動化,仍有借鑒意義。 | |
| MonkeyRunner | 該工具目前的應用場景已不多,文檔已刪,為了排版好看才留著。 |
文章目錄
- 🐳 文件查找操作
- 🐬 glob 的介紹
- 🐬 glob 的基本使用
- 🐳 查找指定的文件
- 🐳 基于文件內容查找文件
該章節將學習關于文件查找的操作,大家都知道,無論是 Linux 系統還是 Windows 系統都有基于文件名實現過濾、查找的功能。但是如果想要查找一些關于某些文件指定內容的文件,好像無論是 Linux 還是 Windows 明面上沒有這樣的功能了。這個時候就可以通過 Python 來實現這樣的功能,通過該章節的學習,就可以學習到該功能的如何利用 Python 實現這樣的操作。
🐳 文件查找操作
🐬 glob 的介紹
glob 包是一個快速查找文件夾中內容的包,可以通過模糊查找的形式找到我們想要的內容。
🐬 glob 的基本使用
導入包與模塊
from glob import glob
使用方法
glob(任意目錄)
返回內容:
指定路徑下的內容列表,不存在的路徑返回空列表。
代碼示例如下:
# coding:utf-8import osfrom glob import globtarget = os.getcwd()result = glob(target) print(result) # 打印輸出當前路徑的文件夾result = glob(target + '/*') print(result) # 打印輸出當前路徑的文件夾下的所有文件result = glob(target + '/*.py') print(result) # 打印輸出當前路徑的文件夾下的所有以 "py" 結尾的文件result = glob(target + '/*.zip') print(result) # 打印輸出當前路徑的文件夾下的所有以 "zip" 結尾的文件result = glob(target + '/filetest*') print(result) # # 打印輸出當前路徑的文件夾下的所有以 "filetest" 開頭的文件運行結果如下:
🐳 查找指定的文件
已知條件:
想查找的文件名已經知道,但是目錄在哪里并不知道。
實現方法:
利用 "glob" 從最上級目錄開始查找,利用遞歸模式,不斷的查找,直到找到為止。
代碼示例如下:
# coding:utf-8import glob""" 獲取當前路徑下所有內容 判斷每個內容的類型(文件夾還是文件) 若是文件夾則繼續遞歸查找 """path = glob.os.path.join(glob.os.getcwd(), '*') # 獲取當前文件夾下的所有內容# glob 模塊其實已經包含了 "os" 模塊 final_result = [] # 定義一個空列表,用以存儲 search() 函數查到的內容def search(path, target): # 定義 search() 函數,傳入 "path" 文件路徑, "target" 要查找的目標文件result = glob.glob(path)for data in result: # for 循環判斷遞歸查到的內容是文件夾還是文件if glob.os.path.isdir(data): # 若是文件夾,繼續將該文件夾的路徑傳給 search() 函數繼續遞歸查找_path = glob.os.path.join(data, '*')search(_path, target)else: # 若是文件,則將該查詢到的文件所在路徑插入 final_result 空列表if target in data:final_result.append(data)return final_resultif __name__ == '__main__':result = search(path, target='filetest.py')print(result)運行結果如下:
🐳 基于文件內容查找文件
接下來我們看一下查找指定內容的文件:
已知條件:
文件中包含有某些關鍵字,但是不知道文件名和文件所在路徑
實現方法:
利用 "glob" 從最上級目錄開始查找,利用遞歸模式,不斷的查找。如果是文件夾則進入繼續查找,是文件則讀取,判斷是否包含該內容,返回該內容的文件名以及所在路徑。
其實,基于文件內容查找文件實現的方式大體與上文的查找指定文件大體相似,只不過加入了讀取文件的判斷罷了。
代碼示例如下:
# coding:utf-8import glob""" 獲取當前路徑下所有內容 判斷每個內容的類型(文件夾還是文件) 若是文件夾則繼續遞歸查找 """path = glob.os.path.join(glob.os.getcwd(), '*test04') # 因為下文捕獲不可讀文件格式太多,所以這里直接指定了 "test04" 路徑 final_result = [] # 定義一個空列表,用以存儲 search() 函數查到的內容def search(path, target): # 定義 search() 函數,傳入 "path" 文件路徑, "target" 要查找的目標文件result = glob.glob(path)for data in result: # for 循環判斷遞歸查到的內容是文件夾還是文件if glob.os.path.isdir(data): # 若是文件夾,繼續將該文件夾的路徑傳給 search() 函數繼續遞歸查找_path = glob.os.path.join(data, '*')search(_path, target)else: # 若是文件,則將該查詢到的文件所在路徑插入 final_result 空列表f = open(data, 'r') # 利用 open() 函數讀取文件,并通過 try...except... 捕獲不可讀的文件格式(.zip 格式)try:content = f.read()if target in content:final_result.append(data)except:print('這是不可讀文件格式的文件的所在路徑:{} '.format(data))continuefinally:f.close()return final_resultif __name__ == '__main__':result = search(path, target='測試文件')print(result)運行結果如下:
總結
以上是生活随笔為你收集整理的〖Python自动化办公篇④〗- 文件自动化管理 - 文件查找与基于文件内容查找文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人博客的制作总结
- 下一篇: python数据可视化:使用dash给博