概要
Python
でディレクトリを作成する際、存在しない親ディレクトリも一緒に作成したいことがよくあります。mkdir -p
に相当するPython
の方法としては、os.makedirs
やpathlib.Path.mkdir
が一般的です。これらの関数は、ディレクトリが存在しない場合に親ディレクトリを含めて一度に作成でき、Python
3.5以降ではより簡潔に利用できます。
os.makedirs()
を使った方法
os.makedirs()
は、指定したパスに存在しないディレクトリをすべて作成する関数です。特にexist_ok=True
を指定すると、ディレクトリが既に存在していてもエラーが発生しません。
import os
os.makedirs('/path/to/nested/directory', exist_ok=True)
このコードは、指定したパスに必要なディレクトリが存在しない場合にすべて作成します。また、exist_ok=True
を設定することで、既にディレクトリが存在しても安全にスキップされます。
エラーハンドリング
os.makedirs
を使う場合、競合や権限の問題によってエラーが発生することがあります。そのため、try-except
ブロックでエラーハンドリングを行うのがベストプラクティスです。
import os
try:
os.makedirs('/path/to/nested/directory')
except OSError as e:
if e.errno != errno.EEXIST:
raise
この方法では、ディレクトリが既に存在している場合には無視し、それ以外のエラーのみを処理します。
pathlib.Path.mkdir()
を使った方法
Python
3.5以降では、pathlib
モジュールを使用して、より直感的にディレクトリを作成することができます。Path
オブジェクトを利用することで、ファイルやディレクトリ操作をオブジェクト指向的に扱えるようになります。
from pathlib import Path
Path('/path/to/nested/directory').mkdir(parents=True, exist_ok=True)
parents=True
を指定することで、親ディレクトリが存在しない場合もすべて自動的に作成します。また、exist_ok=True
を使用することで、すでにディレクトリが存在していてもエラーを回避します。
まとめ
Python
でディレクトリを作成する際、os.makedirs()
やpathlib.Path.mkdir()
はどちらも有効な手段です。特にPython
3.5以降では、pathlib
を使うことでより直感的で柔軟な操作が可能です。ディレクトリの存在確認やエラーハンドリングを適切に行うことで、安全かつ効率的なファイル操作が実現できます。