os.walk用法

os.walk(top, topdown=True, οnerrοr=None, followlinks=False)
可以得到一個三元tupple(dirpath, dirnames, filenames),

第一個爲起始路徑,第二個爲起始路徑下的文件夾,第三個是起始路徑下的文件。

dirpath 是一個string,代表目錄的路徑,

dirnames 是一個list,包含了dirpath下所有子目錄的名字。

filenames 是一個list,包含了非目錄文件的名字。

這些名字不包含路徑信息,如果需要得到全路徑,需要使用os.path.join(dirpath, name).

import os
path = 'D:\Test'
for root, dirs, files in os.walk(path):
    print("Root = ", root, "dirs = ", dirs, "files = ", files)

文件結構:
在這裏插入圖片描述

輸出:


Root =  D:\Test 	dirs =  ['SubTest1', 'SubTest2'] 	files =  ['TEST DOCUMENT.docx', 'TEST.txt']
 
Root =  D:\Test\SubTest1 	dirs =  ['ThirdLayer'] 	files =  ['TEST DOCUMENT1.docx', 'TEST1.txt']
 
Root =  D:\Test\SubTest1\ThirdLayer 	dirs =  [] 	files =  ['TEST DOCUMENT L3.docx', 'TEST L3.txt']
 
Root =  D:\Test\SubTest2 	dirs =  [] 	files =  ['TEST DOCUMENT2.docx', 'TEST2.txt']

結果分析

1,先從根目錄進行遍歷,讀取跟目錄的文件夾和文件。

2,以根目錄第一個子目錄爲新的根目錄,讀取其文件夾和文件。

3,再以2中的第一個子文件夾爲根目錄,讀取文件夾和文件。(這個應該是屬於樹結構裏面的自上而下深度遍歷算法)

4,讀取1步驟裏面其他子目錄的文件夾和文件。

其它說明:

  1. 文件的全路徑: 從上面的結果可以看出,文件的全路徑,應該是os.path.join(root, files)
  2. 如果你要數路徑下有多少個文件夾,其實很簡單就是所有的root數目-1,因爲root數目包含path文件夾。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章