? os.walk() 文件遍歷

學(xué)習(xí)os.walk文件遍歷,最最最重要的是了解這種遍歷方法的邏輯,它的路徑?。〔涣私獾脑?,永遠(yuǎn)也學(xué)不會(huì)。

os.walk()是Python原生的遍歷文件夾方法,但是表現(xiàn)出來的邏輯真的不是很好記憶。

用法:

os.walk(頂級(jí)目錄地址, topdown=True, onerror=None, followlinks=False) 

函數(shù)返回一個(gè)三元Tupple: (目錄路徑(字符串), 子目錄名(列表), 文件名(列表))

image
image

遍歷路徑

os.walk()逐層掃描的,一層一層來。
比如上圖中,從Root根目錄下開始掃,

  • 先掃第一層,獲得pics1.jpg, pic2.jpg, 然后是一個(gè)目錄New和目錄Old。
  • 這個(gè)時(shí)候還不深入每個(gè)子目錄,現(xiàn)在算完成一個(gè)循環(huán),返回一個(gè)子目錄列表: [pics1.jpg, pics2.jpg, New, Old]
  • 然后在從上面的第一個(gè)子目錄開始,往下掃,如同上面的過程。
  • 完成第一個(gè)目錄后,再繼續(xù)第二個(gè)子目錄。

記住,它不會(huì)無窮盡深入每一個(gè)目錄一直到底,而是逐層掃。
掃完一層后,再跳出來需要遍歷的目錄深入下一層。

指定深度

os.walk默認(rèn)是深入到底的,遍歷所有的位置。有時(shí)候我們只需要一層或兩層。
抱歉,os.walk()沒這個(gè)功能,只能自己寫。
方法就是:聲明一個(gè)depth變量記錄當(dāng)前深度,循環(huán)到一定深度后,用break語句退出循環(huán)。
以下為示例代碼:

depth = 1
for root, subdir, filenames in os.walk():
    if depth is 2:
        break
    depth += 1

示例:只看文件

search_dir = '/home/me/`
for root, subdir, filenames in os.walk(search_dir):
    print(root, subdir)
    for fn in filenames:
        print(fn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、os.walk() 函數(shù)聲明:os.walk(top,topdown=True,onerror=None) (...
    流光汐舞閱讀 7,546評(píng)論 0 1
  • os模塊 os模塊的作用: os,語義為操作系統(tǒng),所以肯定就是操作系統(tǒng)相關(guān)的功能了,可以處理文件和目錄這些我們?nèi)粘?..
    Irlans閱讀 710評(píng)論 0 2
  • os.walk() 函數(shù)聲明:walk(top,topdown=True,onerror=None) 1>參數(shù)to...
    mugtmag閱讀 4,151評(píng)論 0 0
  • 陽光進(jìn)來的地方 心出去的地方 戀人的眼 情人的淚 心的歸宿 風(fēng)進(jìn)來的地方 塵出去的地方 孩子想媽媽 父親想兒子 月...
    田野花開閱讀 557評(píng)論 8 7
  • 不會(huì)走路 永遠(yuǎn)不知道什么路好走 走的路多了 才明白到什么地方去 應(yīng)該走什么路 老蝸居在家 心里越覺的 外面的世界特...
    劉印敏閱讀 409評(píng)論 0 1

友情鏈接更多精彩內(nèi)容