Python入門之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循環自動完成遞歸枚舉

例如:

F:\aaa 目錄是這樣的文件目錄結構

F:\aaa

|--------1.txt

|--------2.txt

|--------3.txt

|--------4

         |-------5.txt

         |-------6.txt

         |-------7.txt

 

分別打印各個參數的實際值

#!/usr/bin/env python  
# 2.py  
# use UTF-8  
# Python 3.3.0  
  
# os.walk()的使用  
import os  
  
# 枚舉dirPath目錄下的所有文件  
  
def main():  
#begin  
    fileDir = "F:" + os.sep + "aaa"     # 查找F:\aaa 目錄下    
    for root, dirs, files in os.walk(fileDir):  
    #begin  
        print(root)  
        print(dirs)  
        print(files)  
    #end  
    os.system("pause")  
#end  
  
if __name__ == '__main__':  
#begin  
    main()  
#end  
  
  
# 輸出  
# F:\aaa  
# ['4']  
# ['1.txt', '2.txt', '3.txt']  
# F:\aaa\4  
# []  
# ['5.txt', '6.txt', '7.txt']  

 

你也可以這樣,用元組a,通過for循環即可完成目錄的遞歸.

#!/usr/bin/env python  
# 3.py  
# use UTF-8  
# Python 3.3.0  
  
# os.walk()的使用  
import os  
  
# 枚舉dirPath目錄下的所有文件  
  
def main():  
#begin  
    fileDir = "F:" + os.sep + "aaa"     # 查找F:\aaa 目錄下    
    for a in os.walk(fileDir):  
    #begin  
        print(a[0])  
        print(a[1])  
        print(a[2])  
    #end  
    os.system("pause")  
#end  
  
if __name__ == '__main__':  
#begin  
    main()  
#end  
  
  
# 輸出  
# F:\aaa  
# ['4']  
# ['1.txt', '2.txt', '3.txt']  
# F:\aaa\4  
# []  
# ['5.txt', '6.txt', '7.txt']  

 

你還可以這樣,先打印目錄,再打印各個文件

#!/usr/bin/env python  
# 2.py  
# use UTF-8  
# Python 3.3.0  
  
# os.walk()的使用  
import os  
  
# 枚舉dirPath目錄下的所有文件  
  
def main():  
#begin  
    fileDir = "F:" + os.sep + "aaa"     # 查找F:\aaa 目錄下    
    for root, dirs, files in os.walk(fileDir):  
    #begin  
        for dir in dirs:  
        #begin  
            print(os.path.join(root, dir))  
        #end  
        for file in files:  
        #begin  
            print(os.path.join(root, file))  
        #end  
    #end  
    os.system("pause")  
#end  
  
if __name__ == '__main__':  
#begin  
    main()  
#end  
  
  
# 輸出  
# F:\aaa\4  
# F:\aaa\1.txt  
# F:\aaa\2.txt  
# F:\aaa\3.txt  
# F:\aaa\4\5.txt  
# F:\aaa\4\6.txt  
# F:\aaa\4\7.txt  

 

 

參考


免責聲明!

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



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