使用 Python 輕鬆建立目錄的方法|mkdir 和 makedirs 的差異與用法

1. 開始介紹

使用 Python 可以輕鬆地管理檔案與目錄。尤其是建立目錄,是整理檔案、備份資料或自動生成內容時經常執行的操作之一。本教學將詳細說明如何使用 os 模組與 pathlib 模組來建立目錄。同時也會介紹遞迴建立目錄與錯誤處理的方式,內容淺顯易懂,適合 Python 初學者學習。

2. 使用 os.mkdir() 建立目錄

基本用法

os.mkdir() 是在指定路徑下建立單一目錄的基本方法。不過,這個函式有個限制:如果上層目錄不存在,會導致錯誤。例如,以下是建立目錄的簡單範例:

import os

# 指定要建立的目錄路徑
dir_path = './new_directory'

# 建立目錄
os.mkdir(dir_path)

這段程式碼會在指定路徑下建立目錄,但如果已經有相同名稱的目錄存在,就會產生 FileExistsError。這是使用 os.mkdir() 時需要注意的地方。

錯誤處理

透過先確認目錄是否已存在來避免錯誤。以下是具體範例:

import os

# 指定要建立的目錄路徑
dir_path = './new_directory'

# 確認目錄是否存在
if not os.path.exists(dir_path):
    os.mkdir(dir_path)
else:
    print(f"目錄 '{dir_path}' 已經存在。")

這種方式可以避免在已存在的目錄上重複建立,進而防止錯誤發生。

年収訴求

3. 使用 os.makedirs() 遞迴建立目錄

遞迴建立目錄

os.makedirs() 可以說是 os.mkdir() 的進階版本。它能夠一次建立多層的目錄,即使上層目錄尚未存在,也會一併自動建立中間的目錄。

import os

# 包含中間目錄的路徑
dir_path = './parent_directory/sub_directory'

# 遞迴建立目錄
os.makedirs(dir_path)

在這個範例中,parent_directory 和其中的 sub_directory 會一次被建立。即使中間的目錄不存在,也不會出錯,顯示出這個方法的高便利性。

使用 exist_ok=True 處理錯誤

os.makedirs() 提供了 exist_ok 選項,即使目錄已經存在,也能避免發生錯誤繼續執行。

import os

dir_path = './parent_directory/sub_directory'

# 即使目錄已存在也不會發生錯誤
os.makedirs(dir_path, exist_ok=True)

使用這種方式,就不需要事先檢查目錄是否存在,能簡化錯誤處理的流程。

4. 使用 pathlib 模組建立目錄

使用 Path 物件建立目錄

pathlib 模組是從 Python 3.4 開始引入的,提供了操作檔案系統路徑的便利方式。透過 Path() 物件,不僅能提升程式的可讀性,也更具現代化。

from pathlib import Path

# 指定目錄的路徑
dir_path = Path('./new_directory')

# 建立目錄
dir_path.mkdir()

pathlib 的優點是可以使用物件導向的方式來操作路徑,使程式碼更直覺、更易於維護。

遞迴建立目錄與錯誤處理

使用 pathlib 來遞迴建立多層目錄也很簡單,只要設定適當的選項即可。

from pathlib import Path

# 包含中間目錄的路徑
dir_path = Path('./parent_directory/sub_directory')

# 一次建立所有層級的目錄
dir_path.mkdir(parents=True, exist_ok=True)

這段程式碼會一次建立包含中間層的多層目錄,即使目錄已經存在也不會出錯。

年収訴求

5. 確認目錄是否存在與錯誤處理

確認目錄是否已存在,是進行錯誤處理的基本步驟。可以使用 os 模組或 pathlib 模組來確認目錄是否存在,確保操作的安全性。

使用 os 模組進行確認

import os

dir_path = './new_directory'

if os.path.exists(dir_path):
    print(f"目錄 '{dir_path}' 已經存在。")
else:
    print(f"目錄 '{dir_path}' 不存在。")

使用 pathlib 進行確認

from pathlib import Path

dir_path = Path('./new_directory')

if dir_path.exists():
    print(f"目錄 '{dir_path}' 已經存在。")
else:
    print(f"目錄 '{dir_path}' 不存在。")

6. 總結

在這篇文章中,我們詳細介紹了如何使用 Python 建立目錄的各種方法。你學會了 os.mkdir()os.makedirs() 之間的差異,了解了遞迴建立目錄與錯誤處理的技巧。此外,我們也學習了如何使用 Python 的新標準模組 pathlib,撰寫出更簡潔且易讀的程式碼。

根據實際需求選擇最適合的方法,能讓你的目錄操作更有效率、更穩定。

侍エンジニア塾