從 Python 中的目錄中刪除所有文件,而不刪除目錄本身。
在上一篇文章中,我們討論瞭如何 在 Python 中刪除文件 使用 os.remove()
, os.unlink()
, 和 pathlib.Path.unlink()
功能。這篇文章將討論如何從目錄中刪除所有文件。
1.使用 os.listdir()
功能
這個想法是遍歷目錄中的所有文件正在使用 os.listdir()
函數並刪除遇到的每個文件 os.remove()
功能。請注意,這會刪除根目錄中存在的所有文件,但如果該目錄包含任何子目錄,則會引發異常。
1 2 3 4 5 6 |
import os dir = 'path/to/dir' for f in os.listdir(dir): os.remove(os.path.join(dir, f)) |
2.使用 glob.glob()
功能
您還可以使用 glob.glob
函數,它返回與指定模式匹配的路徑的迭代器。但是,如果根目錄有任何子目錄,這也會引發異常。
1 2 3 4 5 6 7 |
import os, glob dir = 'path/to/dir' filelist = glob.glob(os.path.join(dir, "*")) for f in filelist: os.remove(f) |
3.使用 os.scandir()
功能
使用 Python 3.5 版,速度更快 os.scandir()
函數是迭代目錄中文件的推薦方法。像所有其他方法一樣,當根目錄包含子目錄時,這會失敗。
1 2 3 4 5 6 |
import os, glob dir = 'path/to/dir' for file in os.scandir(dir): os.remove(file.path) |
4.使用 shutil.rmtree()
功能
如果您需要從目錄中刪除所有文件、子目錄和符號鏈接,請考慮使用 shutil.rmtree()
功能與 os.remove()
函數,如下圖:
1 2 3 4 5 6 7 8 9 10 |
import os, shutil dir = 'path/to/dir' for files in os.listdir(dir): path = os.path.join(dir, files) try: shutil.rmtree(path) except OSError: os.remove(path) |
如果需要刪除完整目錄,可以直接調用 shutil.rmtree()
根目錄下的函數:
1 2 3 4 5 |
import shutil dir = 'path/to/dir' shutil.rmtree(dir) |
這就是在 Python 中刪除目錄中的所有文件。