Python 列出目錄中所有檔案教學:os.listdir 與os.walk - GT Wang

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

在使用Python 開發處理檔案的程式時,時常會需要把一個目錄中的檔案名稱全部列出來,然後再使用迴圈對每一個檔案進行後續的處理,以下是各種取得目錄中 ... Blogger舊站 關於 Facebook Flickr 物聯網 網站架設 程式設計 統計 素食 特價優惠 宗教 物聯網 網站架設 程式設計 統計 素食 特價優惠 宗教 Python列出目錄中所有檔案教學:os.listdir與os.walk 2017/08/26 3則留言 這裡介紹如何在Python中列出目錄中的檔案,並且配合各種篩選方式,取得符合條件的檔案列表。

在使用Python開發處理檔案的程式時,時常會需要把一個目錄中的檔案名稱全部列出來,然後再使用迴圈對每一個檔案進行後續的處理,以下是各種取得目錄中所有檔案名稱的方法與範例程式碼。

os.listdir取得檔案列表 os.listdir可以取得指定目錄中所有的檔案與子目錄名稱,以下是一個簡單的範例: #!/usr/bin/python #-*-coding:utf-8-*- fromosimportlistdir fromos.pathimportisfile,isdir,join #指定要列出所有檔案的目錄 mypath="/var/log" #取得所有檔案與子目錄名稱 files=listdir(mypath) #以迴圈處理 forfinfiles: #產生檔案的絕對路徑 fullpath=join(mypath,f) #判斷fullpath是檔案還是目錄 ifisfile(fullpath): print("檔案:",f) elifisdir(fullpath): print("目錄:",f) 這個例子中我們使用os.listdir取得/var/log目錄中所有的檔案與子目錄的列表,接著使用一個迴圈來檢查每個項目是檔案還是目錄,在迴圈中我們先用os.path.join把檔名加上目錄的路徑,產生檔案的絕對路徑後,再以os.path.isfile與os.path.isdir來判斷該項目是普通檔案還是目錄。

執行之後,輸出會類似這樣: 目錄:lightdm 目錄:ntpstats 檔案:Xorg.0.log 檔案:messages 檔案:bootstrap.log [略] os.walk遞迴搜尋檔案 os.walk是一個以遞迴方式列出特定路徑下,所有子目錄與檔案的函數,以下是一個使用範例: #!/usr/bin/python #-*-coding:utf-8-*- fromosimportwalk #指定要列出所有檔案的目錄 mypath="/var/log" #遞迴列出所有子目錄與檔案 forroot,dirs,filesinwalk(mypath): print("路徑:",root) print("目錄:",dirs) print("檔案:",files) os.walk會自動遞迴搜尋指定路徑之下的所有子目錄,將每一個目錄中的檔案都列出來,並且自動區分檔案與目錄,執行之後輸出會類似這樣: 路徑:/var/log 目錄:['lightdm','ntpstats','apt','fsck','samba'] 檔案:['Xorg.0.log','messages','bootstrap.log','dpkg.log','kern.log','faillog','syslog','btmp','user.log','alternatives.log','wtmp','auth.log','fontconfig.log','daemon.log','Xorg.0.log.old','debug','lastlog','dmesg','boot.log'] 路徑:/var/log/ntpstats 目錄:[] 檔案:[] 路徑:/var/log/apt 目錄:[] 檔案:['term.log','history.log'] [略] 若要取得所有檔案的絕對路徑,讓程式逐一處理的話,可以這樣寫: #!/usr/bin/python #-*-coding:utf-8-*- fromosimportwalk fromos.pathimportjoin #指定要列出所有檔案的目錄 mypath="/var/log" #遞迴列出所有檔案的絕對路徑 forroot,dirs,filesinwalk(mypath): forfinfiles: fullpath=join(root,f) print(fullpath) 這樣執行後,不管該路徑之下有多少層子目錄,都會自動列出所有的檔案路徑,輸出會類似這樣: /var/log/Xorg.0.log /var/log/messages /var/log/bootstrap.log [略] /var/log/boot.log /var/log/apt/term.log /var/log/apt/history.log /var/log/fsck/checkfs /var/log/fsck/checkroot 參考資料:StackOverflow 程式設計 Python G.T.Wang 個人使用Linux經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

2留言 新增留言→ site Greetings!Veryusefuladvicewithinthisarticle!It’sthelittlechangesthatproducethelargestchanges. Thanksforsharing! 2022/04/24 回覆 http://www.google.iq/ whoahthisweblogiswonderfulilikereadingyourarticles. Keepupthegoodwork!Youknow,lotsofindividualsarelookingaroundforthis info,youcouldhelpthemgreatly. 2022/04/24 回覆 1則自動引用通知 自學程式是要學什麼?4個程式初學者要有的能力和心態|龍總有 LeaveaReply取消回覆 留言* Name* Email* Website 搜尋 分類Arduino(5) BeagleBoneBlack(1) DIY(54) Linux(315) MacOSX(32) Octave(15) Perl(12) R(47) Windows(97) WordPress(16) 個人(15) 免費(35) 兒童(30) 實用工具(85) 手機(13) 技巧(45) 有趣(99) 樹莓派(57) 物聯網(55) 玄學(11) 生活(209) 程式設計(137) 統計學(8) 網頁空間(36) 網頁開發(128) 虛擬化(7) 農業(42) 遊戲(9) 開箱(131) 雲端(4) 宗教 如何戒邪淫、遠離婚外情 戒淫寶典:《壽康寶鑑》白話有聲書 公益 家扶基金會 Yahoo奇摩公益 智邦公益網 igiving公益網 社團法人新竹縣愛心物資集發協會 ©2022G.T.Wang



請為這篇文章評分?