[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)
    • dirnamesfilenames則是dirpath下的子資料夾名稱與檔案名稱
  • topdownTrue/False決定節點的生成順序 (親資料夾先/後於子資料夾)
  • followlinksTrue,則會訪問 (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

References

目錄
Bitnami