Python遞歸遍歷文件夾搜索文件 腳本MagicSearch.py
開發背景:
電腦的E盤里有很多電子書,以前對那個技術比較感興趣就去下載很多電子書,有些看了,有些沒看,電子書沒有在一個地方,于是我準備寫一個腳本,將這些電子書搜索出來,進行整理一下。
程序設計的思路:
定義一個搜索的根目錄baseDir,一個不搜索的文件夾列表notSearhFolderArr,一個搜索的文件類型列表searchTypeArr,
判斷根目錄baseDir是有效的,并且不存在于notSearhFolderArr數組中,
獲取文件夾下的所有文件及文件夾,
遍歷,判斷子元素是文件,并且文件類型存在于searchTypeArr,如果真則存在返回路徑
判斷子元素,是文件夾并且不屬于notSearhFolderArr數組中, 執行第一步,進行遞歸搜索
代碼:
# 根據配置好的文件,搜索文件夾
import os
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') # 處理vscode打印中文亂碼問題
# 主函數
baseDir = "E:\Pang\for_search" # 搜索的根目錄
notSearchFolderArr = ['node_modules'] # 不搜索的目錄
searchFileTypeArr = ['.pdf','.PDF'] # 搜索的文件類型
def searhMain():
allResArr = searchFolder(baseDir)
print('\n'.join(allResArr))
# 搜索一個文件目錄 傳入一個文件目錄路徑
def searchFolder(folderPath):
folderName = os.path.split(folderPath)[-1]
searFilePathArr = []
if os.path.exists(folderPath) and (folderName not in notSearchFolderArr): # 判斷路徑是有效文件夾
fileArr = os.listdir(folderPath) # 獲取文件夾下的所有內容(文件和文件夾)
for item in fileArr:
currentPath = folderPath+'\'+item
(fileName,fileType) = os.path.splitext(item)
if os.path.isfile(currentPath) and (fileType in searchFileTypeArr): # 處理文件
searFilePathArr.append(currentPath)
if os.path.isdir(currentPath) and (item not in notSearchFolderArr): # 處理文件夾
innerFileArr = searchFolder(currentPath) # 遞歸搜索
searFilePathArr.extend(innerFileArr)
return searFilePathArr
searhMain()
主要用到的模塊和api:
模塊 os: 操作文件的模塊
主要api:
os.path.split? : 分割路徑
os.path.exists: 路徑是否存在
os.listdir: 路徑是否是文件夾
os.path.splitext:拆分路徑中的文件擴展名于其他
os.path.isfile: 路徑是否是文件
append: 向數組中追加一個元素
extend: 向數組追加一個數組
運行結果:
程序返回的事根目錄下所有的pdf文件路徑列表
這個腳本稍作修改就可以查詢多個文件類型,對文件進行分類,獲取要查詢的文件路徑后,還可以對文件進行批量備份到一個文件夾下,或者將搜索結果直接打包壓縮。想怎么玩都可以。
學無止境
這個小腳本,花費了我三個小時,除了關鍵字外,所有的api都是我一次一次百度所得,包括那個換行符,沒辦法,python寫的少,但我相信:
雖然我走的慢,但每一步都是在前進,并且永不止步
Python 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。