當需要建立多層巢狀目錄(如 /home/user/data/project)時,若中間層目錄不存在,使用 os.mkdir() 會拋出 FileNotFoundError。
os.makedirs(path, exist_ok=True) 會遞迴建立所有中間目錄,且 exist_ok=True(Python 3.2+)可避免目錄已存在時拋出異常。
import os
# 建立三層目錄
os.makedirs("/home/user/data", exist_ok=True)
print("目錄建立完成")
import os
import errno
def ensure_dir(path):
try:
os.makedirs(path, exist_ok=True)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print(f"目錄已存在:{path}")
else:
print(f"目錄建立成功:{path}")
ensure_dir("/var/log/myapp/2024/01")
ensure_dir("/tmp/test/deep/nested/dir")
| 方法 | 建立單層 | 建立多層 | 目錄存在行為 |
|---|---|---|---|
| os.mkdir() | ✓ | ✗ (需父目錄存在) | 拋出 FileExistsError |
| os.makedirs() | ✓ | ✓ (遞迴建立) | exist_ok=True 時不報錯 |
os.path.join() 或 pathlib.Path 以利跨平台。PermissionError,需以適當權限執行。