Python:使用os.walk() 遞迴印出資料夾中所有目錄及檔名

文章推薦指數: 80 %
投票人數:10人

短短幾行就能達成我的目的,且python 的程式碼也能在windows 上運作。

以下是能達成我目的的 Python walk.py 原始碼: import os for dirPath, dirNames, fileNames in ... 跳到主要內容 Python:使用os.walk()遞迴印出資料夾中所有目錄及檔名 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 4月17,2012 有時候我們會需要在linux中列出某個資料夾底下所有的目錄和檔名, 因為這有點像要某個人進每一個資料夾去看看裡面有什麼東西, 姑且就讓我們叫這個走訪的行為叫walk吧。

(下面那個是JohnnieWalker喔~~~XD) 圖片來源:http://www.wememap.com/blogs/1619120304 如果想要對資料夾的內容有視覺化的展現, 可以使用tree這個指令來列出資料夾底下的結構, 下的指令和顯示的結果如下: [root@localhostdemo]#tree/python/demo/ /python/demo/ |--os_walk.py |--root ||--1file ||--2subDir |||--21file |||--22subDir |||`--221file ||`--23file ||--3file |`--3subDir |`--31file `--walk.py 4directories,8files 由上面我們可以看得出來root底下有一些資料夾和檔案, 我已經特別用不同的顏色標示過了,藍色是資料夾,紅色是檔案, 而紫色的則是這篇要說明的python檔。

雖然已經可以顯示資料夾內部的檔案結構了, 但這次我想要的並不是要視覺化的結果, 我只想要底下所有檔案的完整絕對路徑就好。

本來想用bash之類的script寫,但因為基礎不足, 且想說用script來做字串處理感覺只會給自己帶來更多麻煩, 所以就想說來研究一下強大的python。

結果顯示我的選擇是對的, 短短幾行就能達成我的目的,且python的程式碼也能在windows上運作。

以下是能達成我目的的 Pythonwalk.py原始碼: importos fordirPath,dirNames,fileNamesinos.walk("/python/demo/"): printdirPath forfinfileNames: printos.path.join(dirPath,f) Python執行結果: [root@localhostdemo]#pythonwalk.py /python/demo/ /python/demo/walk.py /python/demo/os_walk.py /python/demo/root /python/demo/root/1file /python/demo/root/3file /python/demo/root/3subDir /python/demo/root/3subDir/31file /python/demo/root/2subDir /python/demo/root/2subDir/23file /python/demo/root/2subDir/21file /python/demo/root/2subDir/22subDir /python/demo/root/2subDir/22subDir/221file 和上面一樣用不同的顏色標註, 短短幾行程式就能達成我們的目的了,是不是很簡單呢? 為了了解整個實作,我們特地先用比較簡單的方式來了解, 這次程式碼中用到的關鍵是os.walk(), 我們先把程式碼成簡化成以下這樣,來看一下回傳的結果。

Pythonos_walk.py原始碼: importos forresponseinos.walk("/python/demo/"): printresponse Python os_walk.py 執行結果: [root@localhostdemo]#pythonos_walk.py ('/python/demo/',['root'],['walk.py','os_walk.py']) ('/python/demo/root',['3subDir','2subDir'],['1file','3file']) ('/python/demo/root/3subDir',[],['31file']) ('/python/demo/root/2subDir',['22subDir'],['23file','21file']) ('/python/demo/root/2subDir/22subDir',[],['221file']) 由 os_walk.py 的執行結果我們可以發現, os.walk()回傳的結果分為很多行,每一行有其固定格式, 我已經將關鍵的部份用不同顏色標出來了, 而這個格式套用在 walk.py中,就會是關鍵的一行: fordirPath,dirNames,fileNamesinos.walk("/python/demo/"): 大家可以把每一行的顏色對應到上面的程式碼中, os.walk()這個function回傳時每行可以得到一個三元的tupple, 其中第一個dirPath是這行啟始路徑, 第二個dirNames是一個list,裡面包含了 dirPath 下所有的資料夾名稱, 而第三個fileNames也是一個list,包含了 dirPath 下所有的檔案名稱。

所以我們利用for走過os.walk()所有的 dirPath, 並且利用底下的for把 fileNames 中所有的f拿出來, 再以 os.path.join(dirPath,f)把資料夾路徑和檔名串接起來, 組合成完整路徑後輸出,就達成我們的目的了。

經過這樣的說明,是不是對os.walk()的運作方式完全理解了呢? 應該還算簡單不會很難理解吧:p 關鍵字:Python,遞迴,處理,路徑,檔案,資料夾,使用,os.walk(),印出,所有,目錄,檔名,子目錄,子資料夾,下面,走訪 參考資料: Python遞迴處理路徑下檔案與資料夾 Python之os.walk() os.walk(dir)理解 Python 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 這個網誌中的熱門文章 【所得稅繳納攻略】信用卡回饋/分期+拆單賺回饋教學! 5月01,2022 2022年5月繳110年度綜合所得稅,想賺回饋用拆單大法同時賺線上及超商的紅利/現金回饋最划算!多數銀行線上繳都有免手續費及分期免息優惠,超商繳則無法分期。

分期好處是延遲付款可以多賺利息且可以減輕繳款壓力!所得稅相關及後續的文章都會統一放在系列文整理,無論你從哪一篇連過來,建議都直接先過去看整個列表,然後按自己有興趣的順序閱讀,最基礎的所得稅概念介紹也別錯過囉!【綜合所得稅節稅攻略】申報/扣除額/節稅系列文總整理! (所得稅攻略一覽)【最新綜合所得稅攻略】稅率級距表/免稅額/標準扣除額! (所得稅概念+試算) 繼續閱讀» 【信用卡排行榜】2022國內外必辦現金回饋信用卡推薦! 4月28,2022 近幾年現金回饋信用卡非常熱門,國內消費輕鬆拿3%、國外4%起跳,網路購物/行動支付/電子票證加值最高10%,繳水電等帳單也能賺回饋!若你是筆筆都要賺的現金回饋族,看這篇就對了!(2022持續更新中) 繼續閱讀» 【房屋稅繳納攻略】2022/111年度信用卡回饋/分期整理! 4月27,2022 2022年/111年度繳納房屋稅信用卡優惠出爐囉!今年5月房屋稅挑對方式最高可賺10%回饋!行動支付、超商繳費回饋高,線上繳費部份銀行免手續費+分期零利率!還有少數有紅利/現金回饋!各式稅金繳納攻略以下文章皆為長期連結,於當年度繳納前會更新當年度優惠4月:牌照稅5月:綜合所得稅5月:房屋稅7月:汽機車燃料使用費11月:地價稅 繼續閱讀» 【萊爾富HiPay】繳費超實用!富邦J卡繳費2%無上限! 4月26,2022 各大超商自家APP,全家Famipay整合度最高,再來則是7-Eleven的 OPEN錢包 及萊爾富的 HiPay,無論哪個目前都可以綁信用卡消費/繳費囉!HiPay搭配富邦J卡繳費享2%無上限,繳稅繳費都好用! 繼續閱讀» 【牌照稅繳納攻略】2022/111年度信用卡回饋/分期整理! 4月26,2022 2022年/111年度繳納牌照稅信用卡優惠出爐囉!今年4月牌照稅挑對方式最高可賺10%回饋!行動支付、超商繳費回饋高,線上繳費部份銀行免手續費+分期零利率!還有少數有紅利/現金回饋!各式稅金繳納攻略以下文章皆為長期連結,於當年度繳納前會更新當年度優惠4月:牌照稅5月:綜合所得稅5月:房屋稅7月:汽機車燃料使用費11月:地價稅 繼續閱讀» 【橘子支付】4月7-ELEVEN最高20%+指定卡8%/UBear4%! 4月27,2022 橘子支付功能除了通路活動可賺回饋,目前無論在店家一般消費、在APP內繳納地方稅等費用、7-11繳納代收費用,搭配指定卡都能享高回饋!無論消費、繳費(生活帳單、各式稅費)通通都好用! 繼續閱讀» 【綜合所得稅攻略】2022所得稅重點變更+報稅節稅教學! 4月28,2022 110年度綜合所得稅扣除額等數字幾乎沒變,這篇為大家整理重點!另外雖然線上報稅/軟體都能直接算出應繳稅金,但建議大家仍要了解一下計算公式和可扣除項目,這樣才能更了解各種節稅方式!所得稅系列文所得稅相關文章先統一整理如下,其中 系列文總整理 一文有系列文推薦閱讀順序唷。

【綜合所得稅節稅攻略】申報/扣除額/節稅系列文總整理!(所得稅攻略一覽)【最新綜合所得稅攻略】稅率級距表/免稅額/標準扣除額!(所得稅概念+試算)【綜合所得稅節稅攻略】列舉扣除額保險費篇(人身/健保)!【綜合所得稅節稅攻略】列舉扣除額房貸利息、房租篇!【綜合所得稅節稅攻略】婚姻懲罰稅取消/夫妻可分開計稅!【所得稅繳納攻略】最新各家信用卡所得稅回饋/分期整理! (繳稅賺回饋)各式稅金繳納攻略以下文章皆為長期連結,於當年度繳納前會更新當年度優惠4月:牌照稅5月:綜合所得稅5月:房屋稅7月:汽機車燃料使用費11月:地價稅 繼續閱讀» 【全盈支付】全盈+Pay升級五好康+綁定銀行/信用卡限量贈! 4月27,2022 全盈支付由全家、玉山銀行與拍付國際三方策略合作,推出的電支產品為「全盈+PAY」,目前註冊/升級享五好康!註冊禮送美式、推薦禮送拿鐵、全台適用通路消費贈點(全家再翻倍)、1號會員日拿鐵買3送3、週六指定商品優惠~ 繼續閱讀» 【銀行代碼查詢】3碼銀行代碼列表、7碼分行代碼查詢 12月11,2021 大家對銀行/金融機構的3碼代碼應該都非常熟悉(例如郵局為700)。

不過除了3碼的銀行代碼外,偶爾我們也需要查詢7碼的分行代碼!像我自己就遇過在郵局填匯款單時需要分行名稱及7碼代碼,另外某些銀行在申請由銀行帳戶自動扣繳信用卡卡費時也會需要!這篇就幫大家整理怎麼查詢「3碼銀行代碼及7碼分行代碼」! 繼續閱讀» 【新光OU點點卡】指定網購+外送平台輕鬆5%、最高22%! 4月23,2022 新光銀行推出與OU數位帳戶 緊密結合的OU點點卡!申請電子帳單享20大網購+2大外送5%現金回饋、新戶核卡後30天5大網購+2大外送再加碼5%!申辦數位帳戶5大網購+2大外送+4大支付加碼11%、扣繳帳單再多1%! 繼續閱讀» 文章列表 2022 138 五月 3 四月 68 三月 20 二月 11 一月 36 2021 98 十二月 21 十一月 8 十月 4 九月 7 八月 11 七月 4 六月 11 五月 3 四月 9 三月 13 二月 2 一月 5 2020 49 十二月 5 十一月 5 十月 2 九月 1 八月 3 七月 4 六月 5 五月 1 四月 7 三月 2 二月 5 一月 9 2019 89 十二月 7 十一月 2 十月 7 九月 10 八月 4 七月 12 六月 11 五月 7 四月 8 三月 13 二月 6 一月 2 2018 116 十二月 15 十一月 24 十月 14 九月 14 八月 10 七月 16 六月 7 四月 9 三月 1 二月 1 一月 5 2017 28 十二月 2 十一月 2 九月 2 八月 2 七月 3 六月 2 五月 6 四月 1 三月 3 二月 2 一月 3 2016 55 十二月 4 十一月 2 十月 6 九月 5 八月 9 七月 4 六月 10 五月 7 四月 2 三月 2 一月 4 2015 62 十二月 3 十一月 6 十月 5 九月 6 八月 4 七月 11 六月 5 五月 17 三月 2 二月 1 一月 2 2014 77 十一月 4 十月 13 九月 7 八月 10 七月 3 六月 22 五月 4 四月 5 三月 5 二月 1 一月 3 2013 58 十二月 7 十一月 6 十月 4 九月 9 八月 4 七月 9 六月 1 五月 2 四月 2 三月 3 二月 4 一月 7 2012 101 十二月 6 十一月 6 十月 9 九月 7 八月 6 七月 5 六月 7 五月 7 四月 15 Python教學及程式範例大全 舊版CentOS光碟映像檔ISO、套件下載 Citi:花旗信用卡電信用戶專案-好禮16選1 cURL指令用法與教學 cURL批次下載指令教學 Python入門教學書籍、電子書推薦 Python:使用os.walk()遞迴印出資料夾中所有目錄及檔名 AByteofPython(咬一口Python,简明Python教程)中英文版電子書連結整理 PythonTutorial2,3(Python入門指南)中英文版電子書連結整理 DiveIntoPython2,3(深入Python)中英文版電子書連結整理 wget指令用法與教學 LinuxScript:自動備份或刪除超過特定時間之過期檔案 LinuxScript:mv,rename單次及批次修改檔案名稱 LinuxScript:查詢Linux及LinuxKernel版本 解決yumupdate錯誤:[Errno-1]Metadatafiledoesnot... 三月 13 二月 11 一月 9 2011 46 十二月 11 十一月 17 十月 3 九月 7 八月 1 六月 2 五月 1 三月 1 二月 1 一月 2 2010 26 十二月 5 十一月 1 十月 2 九月 3 八月 1 七月 9 六月 1 五月 1 四月 2 二月 1 2009 45 十二月 7 十一月 6 十月 1 九月 2 八月 3 七月 1 六月 5 五月 1 四月 4 三月 1 二月 8 一月 6 2008 37 十二月 7 十一月 11 十月 10 九月 8 七月 1 顯示更多 顯示較少



請為這篇文章評分?