os.walk
os.walk方法,主要用來遍歷一個目錄內各個子目錄和子文件。
os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一個三元tupple(dirpath, dirnames, filenames),
第一個為起始路徑,第二個為起始路徑下的文件夾,第三個是起始路徑下的文件。
dirpath 是一個string,代表目錄的路徑,
dirnames 是一個list,包含了dirpath下所有子目錄的名字。
filenames 是一個list,包含了非目錄文件的名字。
這些名字不包含路徑信息,如果需要得到全路徑,需要使用os.path.join(dirpath, name).
通過for循環自動完成遞歸枚舉
目錄是這樣的文件目錄結構:
[root@xiaoma mcw]# tree . ├── cur1.txt ├── cur2.txt ├── mcw │ ├── m1.txt │ └── m2.txt ├── test.py └── xiaoma ├── x1.txt └── x2.txt 2 directories, 7 files
(1)
import os result = os.walk("./") print(result) ------------------結果: [root@xiaoma mcw]# python test.py <generator object walk at 0x7f0e90ad17d0>
(2)os.walk是很多個元組
import os result = os.walk("./") print(result) for i in result: print(i) #i代表每個目錄以及目錄下的文件名字。 ---------------結果; [root@xiaoma mcw]# python test.py ('./', ['xiaoma', 'mcw'], ['test.py', 'cur2.txt', 'cur1.txt']) #當前目錄 當前目錄下的目錄,當前目錄下的文件 ('./xiaoma', [], ['x1.txt', 'x2.txt']) 子目錄以及子目錄寫的文件 ('./mcw', [], ['m2.txt', 'm1.txt']) #代碼解析:os.walk("./") 的第一個元組的第一個元素是指定目錄的名字,第二個元素當前目錄下的子目錄,第三個元素是當前目錄下的文件列表。 第二個元組的第一個元素便是子目錄的名字字符串;第二個元素就是子目錄的子目錄,如果沒有就是空列表;第三個元素就是這個子目錄下的文件列表。 第三個元組是當前目錄下的另一個子目錄。第一個元素是子目錄的名稱字符串;第二個元素是子目錄的子目錄。第三個元素是這個子目錄下的文件列表。
(3)a,正在查詢的./目錄下的單層目錄
import os result = os.walk("./") for a,b,c in result: print(a) #a所有目錄 ------------------結果: [root@xiaoma mcw]# python test.py ./ ./xiaoma ./mcw
4)b表示這個目錄下的各個子目錄列表,子目錄沒有子目錄就顯示為空列表
import os result = os.walk("./") for a,b,c in result: print(b) --------------結果: [root@xiaoma mcw]# python test.py ['xiaoma', 'mcw'] #查詢的目錄./下的子目錄 [] #xiaoma目錄下的子目錄 [] #mcw目錄下的子目錄
5)#c,表示各個目錄下的文件列表
import os result = os.walk("./") for a,b,c in result: print(c) #c,各個目錄文件列表 ----------------結果: [root@xiaoma mcw]# python test.py ['test.py', 'cur2.txt', 'cur1.txt'] ['x1.txt', 'x2.txt'] ['m2.txt', 'm1.txt']
6)遍歷這個目錄下所有文件,包括子目錄的文件
import os result = os.walk("./") for a,b,c in result: # a,正在查看的目錄 b,此目錄下的文件夾 c,此目錄下的文件 for item in c: path = os.path.join(a,item) # print(path) -----------------結果: [root@xiaoma mcw]# python test.py ./test.py ./cur2.txt ./cur1.txt ./xiaoma/x1.txt ./xiaoma/x2.txt ./mcw/m2.txt ./mcw/m1.txt
7)有三級以上的目錄
('./', ['xiaoma', 'mcw'], ['test.py', 'cur2.txt', 'cur1.txt']) ('./xiaoma', [], ['x1.txt', 'x2.txt']) ('./mcw', ['haizi'], ['m2.txt', 'm1.txt']) ('./mcw/haizi', [], [])
參考:
1)https://www.cnblogs.com/JetpropelledSnake/p/8982495.html