python os.walk詳解


 

os模塊大全詳情

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM