python os.walk詳解

 

os模塊大全詳情html

 

os.walk
os.walk方法,主要用來遍歷一個目錄內各個子目錄和子文件。python

os.walk(top, topdown=True, onerror=None, followlinks=False)
能夠獲得一個三元tupple(dirpath, dirnames, filenames), post

第一個爲起始路徑,第二個爲起始路徑下的文件夾,第三個是起始路徑下的文件。
dirpath 是一個string,表明目錄的路徑,
dirnames 是一個list,包含了dirpath下全部子目錄的名字。
filenames 是一個list,包含了非目錄文件的名字。
這些名字不包含路徑信息,若是須要獲得全路徑,須要使用os.path.join(dirpath, name).spa

經過for循環自動完成遞歸枚舉code

 

目錄是這樣的文件目錄結構:htm

 

[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)blog

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,正在查詢的./目錄下的單層目錄pdo

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

相關文章
相關標籤/搜索