[Python] 遍歷資料夾
〇 os.scandir()
os.scandir(path='.')
-> iterator
of os.DirEntry
1Python Doc.: os.DirEntry objects
- 回傳
path
底下的檔案與子資料夾構成的os.DirEntry
物件 (object) 的iterator
- 效率顯著地比
os.listdir()
好
△ os.listdir()
os.listdir(path='.')
-> list
回傳path
底下的檔案名稱與子資料夾名稱構成的list
os.walk()
os.walk(top, topdown=True, onerror=None, followlinks=False)
- 以
top
為 root 生成一個節點為資料夾的資料夾樹 (directory tree) - 每一個資料夾節點
會產生一個三維元組 (3-tuple):(dirpath, dirnames, filenames)
dirpath
是這個資料夾節點的路徑 (path)dirnames
和filenames
則是dirpath
下的子資料夾名稱與檔案名稱
topdown
為True
/False
決定節點的生成順序 (親資料夾先/後於子資料夾)- 若
followlinks
為True
,則會訪問 (visit) symlinks2WIKI: Symbolic Link
有可能因此造成無限循環 - 原本
os.walk()
會呼叫 (call)os.listdir()
在 3.5 版之後改為呼叫os.scandir()
- 預設:由
os.scandir()
引發的錯誤 (error) 會被忽略 (ignored) 而你可以在onerror
設定只有一個引數 (argument) 的函式 (function)
並且該引數必須是個OSError
3Python Doc.: OSError實體 (instance)
該函式可回報 (report) 錯誤以繼續或引發 (raise) 例外 (exception) 以中斷
Last Updated on 2025/01/07 by A1go