如何使用Python刪除目錄中的所有檔案?


在Python中進行目錄檔案管理時,有時需要清空整個資料夾,刪除其中的所有檔案,有時還需要刪除子目錄。Python提供了幾種高效且安全的方法來完成此任務。本文將探討幾種不同的方法來實現上述目標,即刪除目錄中的所有檔案。我們將藉助程式碼示例和逐步說明,確保順利完成上述任務。

使用os.listdir()和os.remove()

讓我們從os模組中的os.listdir()和os.remove()函式開始。功能強大的Python os模組為我們提供了與作業系統互動以及進行檔案操作的函式。透過使用os.listdir(),我們可以編譯目錄中所有檔案的列表,然後遍歷該列表,使用os.remove()方法刪除每個檔案。

使用os.listdir()和os.remove()刪除目錄中的所有檔案。

在第一個示例中,delete_files_in_directory()函式接受目錄路徑作為其引數。os.listdir()方法用於收集指定目錄中所有檔案的完整列表。然後,它繼續遍歷檔案列表,檢查每個專案是否確實是檔案(而不是目錄),並使用os.remove()刪除檔案。

示例

import os

def delete_files_in_directory(directory_path):
   try:
     files = os.listdir(directory_path)
     for file in files:
       file_path = os.path.join(directory_path, file)
       if os.path.isfile(file_path):
         os.remove(file_path)
     print("All files deleted successfully.")
   except OSError:
     print("Error occurred while deleting files.")

# Usage
directory_path = '/path/to/directory'
delete_files_in_directory(directory_path)

輸出

對於某個目錄,輸出如下:

All files deleted successfully.

使用os.scandir()和os.unlink()

接下來,我們使用os模組中的os.scandir()和os.unlink()函式。在Python 3.5中,os.scandir()的引入標誌著在處理大型目錄時其效率超過了os.listdir()。藉助此函式,我們可以檢索檔案資訊並部署os.unlink()來刪除目錄中的所有檔案。

使用os.scandir()和os.unlink()刪除目錄中的所有檔案。

在這個例子中,我們在“with”語句中使用os.scandir()函式,以便在刪除所有檔案後自動關閉目錄。這使我們可以快速訪問檔案屬性,並使用os.unlink()函式以優雅的方式刪除目錄中的所有檔案。

示例

import os

def delete_files_in_directory(directory_path):
   try:
     with os.scandir(directory_path) as entries:
       for entry in entries:
         if entry.is_file():
            os.unlink(entry.path)
     print("All files deleted successfully.")
   except OSError:
     print("Error occurred while deleting files.")

# Usage
directory_path = '/path/to/directory'
delete_files_in_directory(directory_path)

輸出

對於某個目錄,輸出如下:

All files deleted successfully.

使用glob.glob()和os.remove()

Python glob模組提供了一種方便的方法來查詢與特定模式匹配的所有檔案。透過使用glob.glob(),我們可以獲取目錄中與特定模式匹配的所有檔案的列表,然後逐個刪除它們。

使用glob.glob()和os.remove()刪除目錄中的所有檔案。

接下來,我們呼叫Python glob模組及其glob.glob()函式來查詢目錄中的所有檔案,使用*萬用字元匹配所有檔案。然後,我們使用os.remove()函式逐個刪除每個檔案。

示例

import os
import glob

def delete_files_in_directory(directory_path):
   try:
     files = glob.glob(os.path.join(directory_path, '*'))
     for file in files:
       if os.path.isfile(file):
         os.remove(file)
     print("All files deleted successfully.")
   except OSError:
     print("Error occurred while deleting files.")

# Usage
directory_path = '/path/to/directory'
delete_files_in_directory(directory_path)

輸出

對於某個目錄,輸出如下:

All files deleted successfully.

使用os.scandir()和shutil.rmtree()

現在,當需要刪除目錄中的檔案及其所有子目錄時,我們可以呼叫Python shutil模組,它提供了一個名為shutil.rmtree()的方法。

使用os.scandir()和shutil.rmtree()刪除目錄中的所有檔案和子目錄。

os.scandir()方法迭代目錄中的所有條目,檢查每個實體以區分檔案和子目錄。在此過程中,os.unlink()用於刪除檔案,而shutil.rmtree()方法用於刪除子目錄。

示例

import os
import shutil

def delete_files_and_subdirectories(directory_path):
   try:
     with os.scandir(directory_path) as entries:
       for entry in entries:
         if entry.is_file():
            os.unlink(entry.path)
         else:
            shutil.rmtree(entry.path)
     print("All files and subdirectories deleted successfully.")
   except OSError:
     print("Error occurred while deleting files and subdirectories.")

# Usage
directory_path = '/path/to/directory'
delete_files_and_subdirectories(directory_path)

輸出

對於包含子目錄的某個目錄,輸出如下:

All files and subdirectories deleted successfully.

使用os.walk()和os.remove()

最後,我們使用os.walk()和os.remove()函式重複執行我們一直在執行的任務。

使用os.walk()和os.remove()刪除目錄中的所有檔案和子目錄。

os.walk()函式提供了一種強大的方法來遍歷目錄樹,從而高效地處理目錄及其子目錄中的檔案。透過使用os.walk(),我們刪除目錄及其子目錄中的所有檔案。

示例

import os

def delete_files_in_directory_and_subdirectories(directory_path):
   try:
     for root, dirs, files in os.walk(directory_path):
       for file in files:
         file_path = os.path.join(root, file)
         os.remove(file_path)
     print("All files and subdirectories deleted successfully.")
   except OSError:
     print("Error occurred while deleting files and subdirectories.")

# Usage
directory_path = '/path/to/directory'
delete_files_in_directory_and_subdirectories(directory_path)

輸出

對於包含子目錄的某個目錄,輸出如下:

All files and subdirectories deleted successfully.

總之,我們已經遍歷了五種不同的方法來使用Python刪除目錄中的所有檔案。每種方法都有其獨特的魅力,等待您的明智選擇。但是,請注意,檔案刪除是永久性操作。請務必在對關鍵資料執行任何刪除操作之前,在測試目錄上測試您的程式碼。

更新於:2023年8月3日

21K+ 瀏覽量

啟動您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.