一、os.path.walk函數簡介
Python的os.path模塊提供了os.path.walk函數,該函數可以在指定目錄及其子目錄中遍歷所有文件並執行指定操作。os.path.walk()需要3個參數,分別是起始目錄、一個迭代函數、一個傳遞給迭代函數的參數。其基本語法如下:
import os def process(path, dir, files): pass os.path.walk('path/to/folder', process, None)
其中process為自定義迭代函數,os.path.walk()會自動遞歸遍歷起始目錄(包括其子目錄)中所有文件,並將它們的路徑傳遞給process函數。process函數中的參數path表示當前遍歷的文件路徑,dir表示當前遍歷的目錄名,files是一個數組,包含當前目錄下的所有文件。
二、os.path.walk的實際應用
os.path.walk()的使用非常靈活,可以根據具體需求編寫不同的迭代函數。下面,我們將介紹幾種常見的實際應用場景。
三、查詢特定目錄下的所有文件
假設我們需要查詢特定目錄下的所有文件,我們可以編寫如下的迭代函數:
import os def list_files(path, dir, files): for file in files: # 使用os.path.join()函數將路徑拼接起來 print(os.path.join(path, file)) os.path.walk('path/to/folder', list_files, None)
執行上面的代碼,可以列出特定目錄下的所有文件路徑。
四、計算特定目錄下所有文件的大小
假設我們需要計算特定目錄下的所有文件的大小,我們可以編寫如下的迭代函數:
import os total_size = 0 def compute_size(path, dir, files): global total_size for file in files: # 使用os.path.join()函數將路徑拼接起來 file_path = os.path.join(path, file) # 判斷文件是否存在,並且不是目錄 if os.path.isfile(file_path): # 獲取文件大小 file_size = os.path.getsize(file_path) total_size += file_size os.path.walk('path/to/folder', compute_size, None) print('Total size:', total_size)
執行上面的代碼,可以計算出特定目錄下的所有文件大小總和。
五、刪除特定目錄下所有滿足條件的文件
假設我們需要刪除特定目錄下所有滿足條件的文件,我們可以編寫如下的迭代函數:
import os def delete_files(path, dir, files): for file in files: # 使用os.path.join()函數將路徑拼接起來 file_path = os.path.join(path, file) # 判斷文件是否存在 if os.path.exists(file_path): # 判斷文件是否滿足刪除條件,這裡的條件是:文件名以.txt結尾 if file_path.endswith('.txt'): os.remove(file_path) os.path.walk('path/to/folder', delete_files, None)
執行上面的代碼,可以刪除特定目錄下所有滿足條件的文件。
原創文章,作者:EYWX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147812.html