一、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-tw/n/147812.html
微信掃一掃
支付寶掃一掃