用Python实现目录遍历及文件搜索
前面我們已經掌握了目錄的創建、修改和刪除方法,但是要開發文件資源管理器程序,僅有這些知識還是不夠的。我們還有下面的問題需要解決:如何遍歷目錄中所有的文件?如何在目錄中搜索到指定的文件?當目錄中有子目錄時該如何處理?
如何遍歷目錄中所有的文件?
遍歷就是對目錄中的所有文件按順序逐個訪問。例如程序要求列出某個目錄中所有的文件名稱,我們就需要訪問這個目錄中所有的文件并獲取文件的名稱,然后將獲取的文件名稱輸出到屏幕上。
那么,我們如何遍歷目錄中所有的文件呢?Python語言的OS模塊為我們提供了兩個列出目錄中所有文件的方法
例1:使用listdir遍歷目錄文件
例1使用OS模塊的listdir方法遍歷D盤盤符下的pub目錄,listdir返回一個列表,列表包含pub目錄下所有文件名稱,然后使用for循環輸出列表。
?
從例1的輸出結果可以看出,listdir方法僅返回了文件名稱,如果我們需要輸出文件的整個路徑,該如何處理呢?只需要使用os模塊下的join方法連接遍歷的目錄路徑和文件名稱就可以了。修改例1的代碼如下:
?
從上圖輸出結果可以看出,pub目錄下的所有文件以完整路徑輸出。但有一個問題,就是在pub目錄下有doc子目錄,該子目錄下的文件并沒有列出,下面我們將討論當目錄包含子目錄時該如何處理?
當目錄中有子目錄時該如何處理?
在例1中要遍歷的pub目錄下面有doc子目錄,例1的程序并沒有列出doc子目錄下的文件,我們現在希望也能遍歷doc子目錄下的文件。這時我們就要使用walk方法了,walk方法可以遞歸遍歷目錄下面的所有文件和子目錄。
例2:使用walk遞歸遍歷目錄文件
例2中使用walk方法遞歸遍歷目錄文件,walk方法會返回一個三元組,分別是root、dirs和files。其中root是當前正在遍歷的目錄路徑;dirs是一個列表,包含當前正在遍歷的目錄下所有的子目錄名稱,不包含該目錄下的文件;files也是一個列表,包含當前正在遍歷的目錄下所有的文件,但不包含子目錄。
前面我們實現了在指定的目錄中遍歷所有文件,也包括子目錄的遍歷,下面我們來看看如何在指定的目錄中搜索文件。
如何在指定的目錄中搜索文件?
實現在指定的目錄中搜索文件,主要實現思路是使用walk方法遞歸遍歷要搜索的目錄,在遞歸遍歷過程中,使用for循環遍歷walk方法返回的files列表,判斷files列表中的文件名稱是否和要搜索的文件名稱相同,若相同就輸出該文件。
例3:在指定的目錄中搜索文件
例3使用walk方法遞歸遍歷pub目錄,使用walk方法主要是考慮到pub目錄下有子目錄,也需要在子目錄中搜索文件。
總結
以上是生活随笔為你收集整理的用Python实现目录遍历及文件搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打造高效能研发团队的 5 个关键步骤
- 下一篇: Python 之嵌套列表