Python 列出目錄中所有檔案教學:os.listdir 與os.walk - GT Wang
文章推薦指數: 80 %
在使用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
延伸文章資訊
- 1python列出資料夾下所有檔案的四個方法 - 程式人生
- 2(Python)查詢資料夾下的所有檔案名稱. os.listdir | AI反斗城
os.listdir 列出了給定資料夾下的所有檔案和資料夾,所以我們需要新增額外的程式碼來只把檔案給提取出來。 os.listdir 只返回相對給定資料夾dirPath 的相對路徑, ...
- 3Python列出目錄所有檔案| CYL菜鳥攻略 - - 點部落
取得檔案列表os.listdir. 取得指定目錄中所有的檔案與子目錄名稱 from os import listdir from os.path import isfile, isdir, jo...
- 4Python讀取目錄資料夾內檔案及路徑 - ucamc
import os # 指定要查詢的路徑 yourPath = '/content/sample_data/' # 列出指定路徑底下所有檔案(包含資料夾) allFileList = os.li...
- 5用Python 開啟目錄中的所有檔案 - Delft Stack
os 模組中的 listdir() 函式 用於列出指定目錄中的所有檔案。此函式將指定的目錄路徑作為輸入引數,並返回該目錄中所有檔案的名稱。