介紹
在Python中,os.walk()函數是一個非常有用的工具,可以用於遍歷指定目錄以及其子目錄中的所有文件和文件夾。該函數返回一個迭代器,可以枚舉目錄樹中的每個目錄和文件。
正文
一、基礎使用方法
os.walk()函數的基礎使用非常簡單,只需要提供一個起始目錄作為參數即可:
import os # 遍歷指定目錄以及子目錄中所有文件和文件夾 for root, dirs, files in os.walk('my_directory'): # 打印當前目錄路徑 print(root) # 打印當前目錄下的所有子目錄 for directory in dirs: print(os.path.join(root, directory)) # 打印當前目錄下的所有文件 for file in files: print(os.path.join(root, file))
在上述代碼中,os.walk()函數遍歷了’my_directory’目錄以及其子目錄的所有文件和文件夾。通過遍歷時返回的root、dirs、files參數,我們可以獲取當前目錄的路徑,該目錄下的所有子目錄,以及該目錄下的所有文件。
二、指定深度
有時候,我們不想遍歷整個目錄樹,而只對目錄樹的一部分進行遍歷。在這種情況下,我們可以使用os.walk()函數的depth參數來指定遍歷的深度。
import os # 遍歷指定目錄以及子目錄中所有文件和文件夾,最大深度為2 for root, dirs, files in os.walk('my_directory', depth=2): # 打印當前目錄路徑 print(root) # 打印當前目錄下的所有子目錄 for directory in dirs: print(os.path.join(root, directory)) # 打印當前目錄下的所有文件 for file in files: print(os.path.join(root, file))
在上述代碼中,我們通過將depth參數設置為2,限制了遍歷的深度。這樣,os.walk()函數將只遍歷’my_directory’目錄以及其直接子目錄的所有文件和文件夾。
三、忽略特定目錄或文件
有時候,我們需要遍歷特定目錄和文件,而忽略其他的部分。在這種情況下,我們可以使用os.walk()函數的topdown和onerror參數來實現。
import os # 忽略'my_directory/subdir'目錄以及所有txt文件 for root, dirs, files in os.walk('my_directory', topdown=True, onerror=None): # 從dirs中刪除'subdir'目錄 if 'subdir' in dirs: dirs.remove('subdir') # 忽略當前目錄下的所有txt文件 files = [f for f in files if not f.endswith('.txt')] # 打印當前目錄路徑 print(root) # 打印當前目錄下的所有子目錄 for directory in dirs: print(os.path.join(root, directory)) # 打印當前目錄下的所有文件 for file in files: print(os.path.join(root, file))
在上述代碼中,我們通過設置topdown參數為True以及onerror參數為None來忽略指定的目錄和文件。在遍歷到’my_directory/subdir’目錄時,我們從dirs中刪除了該目錄,相當於忽略了該目錄。同時,在遍歷到某個目錄下的文件時,我們使用了文件過濾條件,將所有以’.txt’結尾的文件忽略掉。
小結
os.walk()函數是Python中非常有用的一個函數,可以用於遍歷指定目錄以及子目錄中的所有文件和文件夾。通過使用depth、topdown和onerror參數,我們可以實現更加精確和定製化的遍歷。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/240438.html