Python 3 os.walk使用詳解

來源:互聯網
上載者:User

Python 3

 

os.walk(top, topdown = True, onerror = None, followlinks = False)

 

檔案結構

Test folder:

 

SubTest1 folder:

 

ThirdLayer folder:

 

 

SubTest2 folder:

 

 

 

範例程式碼1:

import ospath = '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步驟裡面其他子目錄的檔案夾和檔案。

 

 

範例程式碼2:(修改topdown 為False)

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

 

 

 

返回結果

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

 

 

 

結果分析:

其實結果實質是一樣的,不同的是,這次使用的是自下而上的深度遍曆演算法。

 

 

其他說明:

  1.  檔案的全路徑: 從上面的結果可以看出,檔案的全路徑,應該是os.path.join(root, files)
  2. 如果你要數路徑下有多少個檔案夾,其實很簡單就是所有的root數目-1,因為root數目包含path檔案夾。
  3. 如果以檔案作為path路徑會怎樣? 返回空。
    import ospath = 'D:\Test\TEST.txt' for root, dirs, files in os.walk(path, False):    print("Root = ", root, "dirs = ", dirs, "files = ", files)

     

  4. 如果以一個不存在的檔案夾為路徑作為path會怎樣?這裡假定如果onerror = None,返回為空白。
    import ospath = 'D:\Test1' for root, dirs, files in os.walk(path, False):    print("Root = ", root, "dirs = ", dirs, "files = ", files)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.