如何用Python刪除空資料夾?


在本教程中,我們將學習如何用Python只刪除空資料夾。隨著您刪除檔案或解除安裝程式,空資料夾可能會隨著時間的推移而累積,但它們可能難以找到並手動刪除。幸運的是,Python 提供了一種快速有效的方法來自動刪除空目錄。現在,我們將討論如何在 Python 中刪除空資料夾。

方法

我們可以使用內建的 os 模組來識別並使用 Python 刪除空資料夾。以下是我們可以實現此目標的基本工作流程:

  • 我們可以使用 os.walk() 遞迴遍歷檔案系統,從給定的根目錄開始。

  • 對於在遍歷期間遇到的每個目錄,我們可以使用 os.listdir() 獲取目錄中包含的檔案和子目錄的列表。

  • 如果 os.listdir() 返回的列表為空,我們可以假設該目錄為空,然後我們可以使用 os.rmdir() 刪除它。

  • 如果列表不為空,我們可以遞迴地對目錄內的每個子目錄呼叫相同的函式,繼續遍歷。

現在讓我們使用這個建立一個 delete_empty_folders() 函式。語法如下:

def delete_empty_folders(root):
   for dirpath, dirnames, filenames in os.walk(root, topdown=False):
      for dirname in dirnames:
         full_path = os.path.join(dirpath, dirname)
         if not os.listdir(full_path): 
            os.rmdir(full_path)

讓我們分解這段程式碼的工作原理

  • delete_empty_folders() 函式接受單個引數 root,它指定遍歷的起始目錄。我們使用 os.walk() 遞迴遍歷檔案系統,從 root 開始。

  • 對於在遍歷期間遇到的每個目錄,os.walk() 返回一個元組,其中包含目錄的路徑 (dirpath)、目錄內子目錄名稱的列表 (dirnames) 和目錄內檔名稱的列表 (filenames)。

  • 我們以相反的順序遍歷 dirnames 列表(使用 topdown=False),以便我們首先刪除最深的空目錄。對於 dirnames 中的每個目錄,我們使用 os.path.join() 構造目錄的完整路徑。

  • 如果目錄為空(即,如果 os.listdir(full_path) 返回空列表),我們會列印一條訊息,指示我們正在刪除該目錄。然後我們使用 os.rmdir() 刪除目錄。

就是這樣!使用此程式碼,我們可以識別並刪除從給定根目錄開始的空目錄。

示例

在我們對整個檔案系統執行 delete_empty_folders() 函式之前,讓我們在一個較小的目錄子集上對其進行測試,以確保其正常工作。

以下是一個我們可以用於測試的示例目錄結構:

test_folder/
   empty_folder/
   nonempty_folder/
      file.txt

我們可以使用以下 Python 程式碼建立此目錄結構,然後在 test_folder 目錄上呼叫 delete_empty_folders() 函式:

import os

# Create test folder structure
root = "test_folder"
os.makedirs(os.path.join(root, "empty_folder"))
os.makedirs(os.path.join(root, "nonempty_folder"))
with open(os.path.join(root, "nonempty_folder", "file.txt"), "w") as f: f.write("This is a test file.")
delete_empty_folders(root)

輸出

Deleting empty directory: test_folder\empty_folder

如果我們再次檢查 test_folder 目錄,我們應該看到 empty_folder 已被刪除,只留下 test_folder 目錄中的 nonempty_folder。

示例

現在讓我們快速看一下另一個案例。以下是一個我們可以用於測試的示例目錄結構:

test_folder/
   nonempty_folder/
      file1.txt
		file2.txt
	empty_folder1/
	empty_folder2/

我們可以使用以下 Python 程式碼建立此目錄結構,然後在 test_folder 目錄上呼叫 delete_empty_folders() 函式:

import os

# Create test folder structure
root = "test_folder"
os.makedirs(os.path.join(root, "empty_folder1"))
os.makedirs(os.path.join(root, "empty_folder2"))
os.makedirs(os.path.join(root, "nonempty_folder"))
with open(os.path.join(root, "nonempty_folder", "file1.txt"), "w") as f: f.write("This is the 1st test file.")
with open(os.path.join(root, "nonempty_folder", "file2.txt"), "w") as f: f.write("This is the 2nd test file.")
delete_empty_folders(root)

輸出

Deleting empty directory: test_folder\empty_folder1
Deleting empty directory: test_folder\empty_folder2

如果我們再次檢查 test_folder 目錄,我們應該看到 empty_folder1 和 empty_folder2 都已被刪除,只留下 test_folder 目錄中的 nonempty_folder。

結論

在本教程中,我們學習瞭如何使用 Python 識別和刪除檔案系統上的空資料夾。使用本教程中介紹的程式碼和技術,我們現在擁有了一個強大的工具來管理我們的檔案系統並保持其組織性。無論我們是在大型資料分析專案之後進行清理,還是隻是試圖讓我們的計算機平穩執行,使用 Python 識別和刪除空資料夾的能力都可以節省我們的時間,並使我們的生活更輕鬆。

更新於:2023年5月12日

2K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告