Python:使用os.walk() 遞迴印出資料夾中所有目錄及檔名
文章推薦指數: 80 %
短短幾行就能達成我的目的,且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
顯示更多
顯示較少
延伸文章資訊
- 1Python 取得檔案路徑的常用方法 - 羔羊的實驗紀錄簿
import os for dirPath, dirNames, fileNames in os.walk(r"d:\floder"): print(dirPath) for f in file...
- 2dirpath python Code Example - Grepper
Python answers related to “dirpath python”. get path to file without filename python · pathlib pa...
- 3Python 如何得到資料夾下的所有檔案 - Delft Stack
os.listdir 列出了給定資料夾下的所有檔案和資料夾,所以我們需要新增額外的程式碼來只把檔案給提取出來。 Python. pythonCopy import os dirPath = r"...
- 4Python | os.path.dirname() method - GeeksforGeeks
os.path.dirname() method in Python is used to get the directory name from the specified path. Syn...
- 5Python 取出目錄的路徑dirname
本篇ShengYu 介紹Python 取出目錄的路徑os.path.dirname() 的用法與範例,並示範在linux、macOS、windows 各平台下的差異。以下範例是在Python 3...