Python 3 – os.walk() 方法
Python 3 中的 os.walk() 方法是一個非常有用的函數,可以用于遍歷目錄樹,獲取目錄下的所有文件和子目錄。愛掏網 - it200.com本文將詳細介紹 os.walk() 方法的使用方法及其示例代碼。愛掏網 - it200.com
os.walk() 方法用于遍歷一個目錄樹,獲取目錄下的所有文件和子目錄。愛掏網 - it200.com它返回一個生成器對象,可以通過 for 循環來遍歷目錄樹,獲取每個目錄下的子目錄和文件。愛掏網 - it200.com每次遍歷返回一個元組,包含當前目錄的路徑、當前目錄下子目錄的名字和當前目錄下的文件名,如下:
for root, dirs, files in os.walk('.', topdown=True):
print(root, dirs, files)
其中,root
為當前目錄的路徑,dirs
為當前目錄下的子目錄名列表,files
為當前目錄下的文件名列表。愛掏網 - it200.com通過 os.walk()
方法的默認參數,還可以控制遍歷順序、包含或排除某些文件夾等。愛掏網 - it200.com
os.walk() 方法示例
下面,我們通過幾個示例來演示如何使用 os.walk() 方法。愛掏網 - it200.com
示例 1:遍歷當前目錄下所有文件
下面是一個簡單的示例,遍歷當前目錄下的所有文件,并輸出文件路徑。愛掏網 - it200.com
import os
for root, dirs, files in os.walk('.', topdown=True):
for file in files:
print(os.path.join(root, file))
示例輸出結果:
./test.txt
./subdir1/file2.txt
./subdir1/file1.txt
./subdir2/file4.txt
./subdir2/subdir3/file5.txt
./subdir2/file3.txt
./subdir2/file2.txt
./subdir2/file1.txt
示例 2:遍歷指定目錄下所有文件
通過參數 topdown=True
可以控制遍歷順序,默認為從上往下遍歷,我們也可以指定從下往上遍歷。愛掏網 - it200.com下面一個例子演示了如何遍歷指定目錄下的文件,包括子目錄。愛掏網 - it200.com
import os
for root, dirs, files in os.walk('mydir', topdown=False):
for file in files:
print(os.path.join(root, file))
示例輸出結果:
mydir/subdir1/file2.txt
mydir/subdir1/file1.txt
mydir/subdir2/file4.txt
mydir/subdir2/subdir3/file5.txt
mydir/subdir2/file3.txt
mydir/subdir2/file2.txt
mydir/subdir2/file1.txt
mydir/test.txt
示例 3:遍歷目錄樹并篩選文件
通過在遍歷的過程中進行文件篩選,我們可以快速的得到滿足條件的文件。愛掏網 - it200.com
下面一個例子演示了如何在遍歷的過程中篩選出 “txt” 文件。愛掏網 - it200.com
import os
for root, dirs, files in os.walk('.', topdown=True):
for file in files:
if file.endswith(".txt"):
print(os.path.join(root, file))
示例輸出結果:
./test.txt
./subdir1/file2.txt
./subdir1/file1.txt
./subdir2/file4.txt
./subdir2/subdir3/file5.txt
./subdir2/file3.txt
./subdir2/file2.txt
./subdir2/file1.txt
示例 4:遍歷目錄樹并創建目錄
通過在遍歷的過程中對目錄進行判斷和操作,我們可以快速的創建符合特定規則的目錄。愛掏網 - it200.com
下面一個例子演示了如何在遍歷的過程中創建符合特定規則的目錄。愛掏網 - it200.com
import os
for root, dirs, files in os.walk('.', topdown=True):
for dir in dirs:
if "data" in dir:
os.makedirs(os.path.join(root, dir, "new_dir"))
示例輸出結果:
# 創建目錄完成后再次遍歷目錄
./data/new_dir
./data/subdir1/new_dir
./data/subdir1/subdir3/new_dir
./data/subdir2/new_dir
./data/subdir2/subdir3/new_dir
示例 5:排除指定文件夾的遍歷
如果需要排除某些文件夾的遍歷,可以通過在遍歷的過程中移除指定目錄。愛掏網 - it200.com