使用 Python 輕鬆建立與刪除資料夾的方法|靈活運用 os 模組與 pathlib 模組

1. 使用 Python 建立資料夾的基本方法

Python 提供了使用標準函式庫輕鬆建立資料夾的方法。最常使用的是 os 模組。本章節將詳細介紹如何使用 os 模組來建立資料夾。

使用 os 模組建立資料夾的方法

透過 os 模組,可以在程式中建立資料夾。這對於整理資料、儲存日誌等情況非常有幫助。

基本的建立資料夾方式如下:

import os

# 指定要建立的資料夾路徑
path = 'example_folder'

# 建立資料夾
os.mkdir(path)

這段程式碼使用 os.mkdir() 函式來建立一個名為「example_folder」的新資料夾。不過,如果該資料夾已經存在,將會拋出 FileExistsError 錯誤。

建立多層資料夾:os.makedirs()

如果不只要建立單一資料夾,而是希望一次建立多層目錄,可以使用 os.makedirs() 函式。

import os

# 指定多層資料夾路徑
path = 'example_folder/subfolder'

# 即使父資料夾不存在也會自動建立
os.makedirs(path)

使用 os.makedirs() 時,即使指定路徑中的上層資料夾尚未存在,也會一併建立,讓整體資料夾結構一次完成,十分方便。

錯誤處理:使用 exist_ok=True

如果希望在資料夾已存在時不產生錯誤並繼續執行,可以加入 exist_ok=True 參數。如下例所示,即使資料夾已存在,也不會出錯。

import os

path = 'example_folder/subfolder'

# 若資料夾已存在,忽略錯誤
os.makedirs(path, exist_ok=True)

這樣可以避免每次執行程式時因為資料夾已存在而出現錯誤,有助於撰寫更穩定的程式碼。

2. 使用 Pathlib 模組建立資料夾

從 Python 3.4 開始,pathlib 模組被納入標準函式庫。此模組可以用物件導向的方式操作路徑,使建立資料夾變得更直覺易懂。以下將介紹如何使用 pathlib 模組來建立資料夾。

Pathlib 模組的使用方式

使用 pathlib.Path() 可以建立資料夾。與 os 模組類似,也可加上 exist_ok=True 參數來避免資料夾已存在時出現錯誤。

from pathlib import Path

# 指定要建立的資料夾路徑
path = Path('example_folder/subfolder')

# 建立資料夾
path.mkdir(parents=True, exist_ok=True)

在這段程式中,加入 parents=True 表示若父資料夾不存在也會一併建立,這樣就能達成與 os.makedirs() 相同的效果。

Pathlib 模組的優點

pathlib 模組的最大特色是支援物件導向的操作方式。透過 Path 物件,不只可以建立資料夾,也能直覺地進行路徑結合、檔案操作等,有助於提升程式碼的可讀性與維護性。

年収訴求

3. 建立資料夾時的錯誤處理

在建立資料夾的過程中,可能會發生各種錯誤。例如權限不足、指定的路徑無效等等。本章節將說明如何實作錯誤處理機制。

處理權限錯誤與無效路徑

使用 os.makedirs()pathlib.Path().mkdir() 建立資料夾時,常見的錯誤包括 PermissionError(權限錯誤)與 FileNotFoundError(路徑錯誤)。適當處理這些錯誤可以讓程式更加穩健。

以下是錯誤處理的範例:

import os

path = 'example_folder/subfolder'

try:
    os.makedirs(path, exist_ok=True)
    print(f'資料夾 "{path}" 已建立。')
except PermissionError:
    print('沒有建立資料夾的權限。')
except FileNotFoundError:
    print('指定的路徑無效。')
except Exception as e:
    print(f'發生了未預期的錯誤: {e}')

這段程式碼對常見的錯誤給出對應的處理方式,也能捕捉其他未知錯誤,讓程式不中斷並能妥善回應。

進階的錯誤處理

在可能會發生錯誤的情境中,也可以考慮將錯誤資訊寫入日誌檔或顯示給使用者。尤其是在大型應用程式中,錯誤處理的好壞會直接影響使用體驗,因此應該要妥善設計。

4. 刪除資料夾的方法

除了建立資料夾以外,有時也需要刪除不再使用的資料夾。在 Python 中,可以使用標準函式庫中的 osshutil 模組來刪除資料夾。本章將說明具體的刪除方法。

使用 os.rmdir() 刪除資料夾

os 模組中的 rmdir() 函式可以刪除資料夾。不過這個函式只能刪除「空的」資料夾。

import os

# 指定要刪除的資料夾路徑
path = 'example_folder/subfolder'

# 刪除資料夾
os.rmdir(path)

這段程式碼僅在資料夾為空時才會成功執行。如果資料夾中還有檔案或其他子資料夾,將會發生 OSError

使用 shutil.rmtree() 遞迴刪除資料夾

當資料夾中包含檔案或子資料夾時,可以使用 shutil 模組的 rmtree() 函式來遞迴刪除整個資料夾與其內容。

import shutil

# 指定要刪除的資料夾路徑
path = 'example_folder/subfolder'

# 刪除資料夾與其中所有內容
shutil.rmtree(path)

這種方式即使資料夾不為空也能正常刪除,非常適合用來清除整個資料夾樹。不過請注意,被刪除的檔案與資料夾無法還原,因此要小心使用。

錯誤處理

在刪除資料夾時也要考慮錯誤處理。例如沒有刪除權限、指定的路徑不存在等情況。以下是包含錯誤處理的程式範例:

import shutil

path = 'example_folder/subfolder'

try:
    shutil.rmtree(path)
    print(f'資料夾 "{path}" 已刪除。')
except PermissionError:
    print('沒有刪除資料夾的權限。')
except FileNotFoundError:
    print('找不到指定的資料夾。')
except Exception as e:
    print(f'發生了未預期的錯誤: {e}')

這段程式可以有效處理常見錯誤,也能對未預期的例外情況作出回應。

5. 實際應用情境

在本章中,我們將介紹如何結合資料夾的建立與刪除,來應用於實際專案或資料處理中。例如根據年度或月份分類資料的情境等。

依年份與月份建立資料夾

例如,當您希望依據年份或月份來分類整理資料時,可以撰寫自動建立資料夾的腳本。

import os
from datetime import datetime

# 取得目前的年份與月份
current_year = datetime.now().year
current_month = datetime.now().month

# 設定資料夾路徑
folder_path = f'data/{current_year}/{current_month}'

# 建立資料夾
os.makedirs(folder_path, exist_ok=True)
print(f'資料夾 "{folder_path}" 已建立。')

這段程式會根據目前的年份與月份自動建立資料夾,有助於更有效率地整理資料。

批次刪除資料夾

如果希望根據特定條件批次刪除不需要的資料夾,也可以利用 Python 來高效執行。舉例來說,您可以撰寫程式來刪除超過一定天數的舊資料夾。

import shutil
import os
from datetime import datetime, timedelta

# 取得 30 天前的日期
threshold_date = datetime.now() - timedelta(days=30)

# 資料夾的基礎路徑
base_path = 'data/'

# 檢查資料夾,刪除舊的資料夾
for folder_name in os.listdir(base_path):
    folder_path = os.path.join(base_path, folder_name)
    if os.path.isdir(folder_path):
        folder_date = datetime.strptime(folder_name, '%Y-%m-%d')
        if folder_date < threshold_date:
            shutil.rmtree(folder_path)
            print(f'舊資料夾 "{folder_path}" 已被刪除。')

像這樣的應用案例可以幫助您透過程式自動化資料夾的管理與整理,減少人工操作的負擔。

6. 總結

本文介紹了如何使用 Python 來建立與刪除資料夾。我們涵蓋了使用 ospathlib 模組的基本操作方式,並說明了錯誤處理及實際應用情境。透過這些技巧,您可以撰寫出更有效率且更穩定的資料管理程式。

作為下一步,您也可以進一步學習如何操作檔案、進行壓縮或其他更進階的資料管理技術。