[Python] 遍歷資料夾
〇 os.scandir()
os.scandir(path='.') -> iterator of os.DirEntry1Python 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)
並且該引數必須是個OSError3Python Doc.: OSError實體 (instance)
該函式可回報 (report) 錯誤以繼續或引發 (raise) 例外 (exception) 以中斷
Last Updated on 2025/01/07 by A1go