1. 程式人生 > >python語法----os.walk()函式

python語法----os.walk()函式

os.walk() 方法用於通過在目錄樹中游走輸出在目錄中的檔名,向上或者向下

os.walk() 方法是一個簡單易用的檔案、目錄遍歷器,可以幫助我們高效的處理檔案、目錄方面的事情。
walk()語法格式:
os.walk(dir, topdown=True, None, followlinks=False)
引數:
dir – 是將要遍歷的目錄地址,返回一個三元組(root,dirs,files)
root 所指的是當前正在遍歷的這個資料夾的本身的地址
dirs 是一個 list ,內容是該資料夾中所有的目錄的名字(不包括子目錄)
files 同樣是 list , 內容是該資料夾中所有的檔案(不包括子目錄)
topdown

– 可選,為 True,則優先遍歷 dir 目錄,否則優先遍歷 dir 的子目錄(預設為True)。如果 topdown 引數為 True,walk 會遍歷dir資料夾,與dir 資料夾中每一個子目錄
onerror – 可選,需要一個 callable 物件,當 walk 需要異常時,會呼叫。
followlinks – 可選,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連線 symbolic link )實際所指的目錄(預設關閉),如果為 False,則優先遍歷 dir 的子目錄。
例項:
建立資料夾結構如下:
test資料夾:
在這裡插入圖片描述
a資料夾:
在這裡插入圖片描述
b資料夾:
在這裡插入圖片描述
b資料夾中new_root資料夾:
在這裡插入圖片描述

b資料夾中new_root2資料夾:
在這裡插入圖片描述
然後執行程式碼測試:

import os

for root,dirs,files in os.walk(".",topdown=True):#topdown為True
    print(root)
    for name in files:
        print(os.path.join(root,name))
    for name in dirs:
        print(os.path.join(root,name))

輸出:

.
.\test.py
.\a
.\b
.\a
.\a\a.txt
.\a\b.txt
.
\a\c.txt .\b .\b\d.txt .\b\e.txt .\b\new_root .\b\new_root2 .\b\new_root .\b\new_root\new_text.txt .\b\new_root2 .\b\new_root2\new_root2.txt

可以看到當topdown為True的時候,先遍歷了test.py所在的資料夾。

當topdown為False的時候:

import os

for root,dirs,files in os.walk(".",topdown=False):#topdown為False
    print(root)
    for name in files:
        print(os.path.join(root,name))
    for name in dirs:
        print(os.path.join(root,name))

輸出:

.\a
.\a\a.txt
.\a\b.txt
.\a\c.txt
.\b\new_root
.\b\new_root\new_text.txt
.\b\new_root2
.\b\new_root2\new_root2.txt
.\b
.\b\d.txt
.\b\e.txt
.\b\new_root
.\b\new_root2
.
.\test.py
.\a
.\b

可以看到先遍歷了子資料夾和子檔案,再遍歷自身資料夾。