Python

【Python】ディレクトリを作成・削除する方法

この記事では、Pythonのコード内からディレクトリを作成・削除する方法を紹介します。

ディレクトリの作成

コード内からディレクトリを作成する方法を見ていきます。

任意のパスにディレクトリを作成するにはmkdir()関数、パス通りにディレクトリを作成するにはmakedirs()関数を使います。

パスを指定して作成する[mkdir関数]

osモジュールのmkdir関数を使うことでディレクトリを作成できます。

import os

os.mkdir(パス)

引数には、作成するディレクトリのパスを指定します。パスは相対パスでも絶対パスでも指定することができます。

すでに同じパスのディレクトリが存在している場合はFileExistsError、パスが間違っている場合はFileNotFoundErrorが送出されます

サンプル

試しにデスクトップにディレクトリを作成してみましょう。

import os

# デスクトップのパス(使っているPCのデスクトップのパスを指定)
path = '/Users/ユーザー名/Desktop'

# ディレクトリ名
dir_name = 'dir'

# ディレクトリの作成
os.mkdir(os.path.join(path, dir_name))

これでデスクトップにdirディレクトリが作成されました。

パスを指定して再帰的に作成する[makedirs関数]

先ほどの方法ではデスクトップにディレクトリを作成し、その中にサブディレクトリを作成しようとすると、2回同じようなコードを書く必要があります。

それは面倒なので、osモジュールのmakedirs関数を使いましょう。makedirs関数を使うことで、引数に指定したパス通りにディレクトリを作成してくれます。

書式

パスで指定した末端ディレクトリとの間にある存在していないディレクトリもまとめて作成することができます。

import os

os.makedirs(パス)

exist_ok引数をTrueにすることで、同じパスのディレクトリが存在していたとしてもエラーを発生させないようにできます。

os.makedirs(path, exist_ok=True)

サンプル

試しに、デスクトップにディレクトリとサブディレクトリを作成してみます。

import os

# デスクトップのパス
path = '/Users/ユーザー名/Desktop'

# デスクトップに作成するディレクトリ名
dir_name1 = 'dir'

# dirディレクトリ内に作成するサブディレクトリ名
dir_name2 = 'sub_dir'

# ディレクトリの作成
os.makedirs(os.path.join(path, dir_name1, dir_name2))

このコードを実行するとデスクトップに下の画像のようなディレクトリが作成されます。

dirディレクトリ内にsub_dirディレクトリが作成されています。

ディレクトリの削除

コード内からディレクトリを削除する方法を見ていきます。

空のディレクトリを削除するにはrmdir()関数、空のディレクトリを再帰的に削除するにはremovedirs()関数、空でないディレクトリを削除するにはrmtree()関数を使います。

空のディレクトリの削除[rmdir関数]

空のディレクトリを削除するには、osモジュールのrmdir関数を使います。

import os

os.rmdir(パス)

引数には、削除したいディレクトリのパスを渡します。

削除するディレクトリが存在しない場合はFileNotFoundError、削除するディレクトリが空でない場合はOSErrorが発生します

サンプル

例として、デスクトップに作成したTestディレクトリを削除してみましょう。

import os

# デスクトップのパス
path = '/Users/ユーザー名/Desktop'

# ディレクトリ名
dir_name = 'Test'

# ディレクトリの削除
os.rmdir(os.path.join(path, dir_name))

デスクトップからディレクトリが削除できました。

再帰的に空のディレクトリを削除する[removedirs関数]

osモジュールのremovedirs関数を使うことで、空ディレクトリを末端ディレクトリから親ディレクトリに向かってまとめて削除できます。

import os

os.removedirs(パス)

サンプル

以下のコードでは、デスクトップのdirディレクトリをサブディレクトリごと削除します。

import os

# デスクトップのパス
path = '/Users/ユーザー名/Desktop'

# ディレクトリ名
dir_name1 = 'dir'

# dirディレクトリのサブディレクトリ名
dir_name2 = 'sub_dir'

# 再帰的にディレクトリを削除
os.removedirs(os.path.join(path, dir_name1, dir_name2))

空ディレクトリのみを削除するので、大事なデータを削除する心配がありません。

空ではないディレクトリの削除[rmtree関数]

shutilモジュールのrmtree関数を使うことで、ファイルなどが格納されているディレクトリも削除することができます。

import shutil

shutil.rmtree(パス)

サンプル

とりあえずデータを保持しているディレクトリを作成します。

import os
import shutil

# デスクトップに作成するディレクトリのパス
dir_path = '/Users/ユーザー名/Desktop/dir'

# ディレクトリの作成
os.mkdir(dir_path)

# dirディレクトリにtest.txtを作成
with open(os.path.join(dir_path, 'test.txt'), 'w') as f:
    pass

上のコードを実行するとデスクトップにtest.txtを保持したdirディレクトリが作成されます。

それでは、dirディレクトリを削除してみます。

# dirディレクトリの削除
shutil.rmtree('/Users/ユーザー名/Desktop/dir')

これでデスクトップからdirディレクトリが削除されました。

ちなみに、rmtree関数の引数にディレクトリではなく、ファイルのパスを渡すとエラーになるので注意しましょう。

まとめ

今回はソースコード内からディレクトリを作成・削除する方法を解説しました。

コード内からディレクトリを操作することで、ログや設定ファイルを保存するディレクトリを外部に生成したり、削除することができます。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』