Pythonで簡単にディレクトリを作成する方法|mkdirとmakedirsの違いと使い方

1. はじめに

Pythonを使うことで、簡単にファイルやディレクトリの管理が可能です。特にディレクトリ作成は、ファイルの整理やバックアップ、自動生成のために頻繁に行われる操作の一つです。このガイドでは、os モジュールと pathlib モジュールを使ったディレクトリの作成方法を詳しく解説します。また、再帰的なディレクトリ作成やエラーハンドリングにも触れ、Python初心者にも分かりやすい内容を目指します。

2. os.mkdir() を使ったディレクトリ作成

基本的な使い方

os.mkdir()は、指定されたパスにディレクトリを1つ作成する基本的な方法です。しかし、この関数には制約があり、親ディレクトリが存在しない場合はエラーを引き起こします。例えば、次のコードはシンプルなディレクトリ作成方法です。

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 を活用することで、よりシンプルで可読性の高いコードが書けることも分かりました。

用途に応じて最適な方法を選択し、効率的なディレクトリ操作を行ってください。