【Python】フォルダ(ディレクトリ)が無ければ作成

使用するのは 関数 os.makedirs

このページは、以下の環境で動作確認を行いました。

テスト使用環境
・Python3.9
・VSCode


フォルダ作成の基本的な書き方

フォルダが存在するか確認後にフォルダを作成する方法

フォルダを作成する際に、既にフォルダが存在するか確認をして、フォルダが存在しない場合にフォルダを作成する書き方です。

import os

# 作成したいアドレスの設定
folderpath = r'C:\Folder'

# フォルダが既に存在するかどうか確認
if not os.path.isdir(folderpath):
    
    # フォルダが無かったら作成
    os.makedirs(folderpath)
例外処理を使用する方法
import os

# 作成したいアドレスの設定
folderpath = r'C:\Folder'

try:
    # フォルダ作成
    os.makedirs(folderpath )

except FileExistsError:
    # フォルダが既にある場合の処理
    pass

今回の書き方では、フォルダが既にある場合に行われる処理はありません(pass)。


簡潔な書き方(Python3.2以降)

Python3.2以降は、下記の方法でフォルダの作成が可能です。

import os

# 作成したいアドレスの設定
folderpath = r'C:\Folder'

# フォルダ作成
os.makedirs(folderpath , exist_ok=True)

# exist_ok=False と設定して既存フォルダを作成しようとすると、次の表示となります。 ↓ ↓ ↓
# FileExistsError: [WinError 183] 既に存在するファイルを作成することはできません。: 'C:\\Folder'

exist_ok=True で「フォルダが既にあったら作成しないでスルーしていいよ」と表現しています。

exist_ok=False (デフォルト) の場合、対象のディレクトリが既に存在するとエラー FileExistsError となります。


フォルダの中に子フォルダも同時に作成したい場合

「フォルダA」を作成して、作成した「フォルダA」の中に「フォルダB」も同時に作成したい場合も、同じ関数で作成することが可能です。
※コードの書き方に変更はありません。作成したいアドレスの設定(4行目) のアドレスを変更しただけです。

import os

# 作成したいアドレスの設定
folderpath = r'C:\Folder\01_A\01_B'

# フォルダ作成
os.makedirs(folderpath , exist_ok=True)

先に作成したフォルダ C:\Folder がある状況で、C:\Folder\01_A\01_B を指定してフォルダ作成をすると、01_A01_B の両方のフォルダが作成されます。

末端フォルダを作成するために、必要なすべての中間フォルダを作成してくれるのです。


追加情報

既にフォルダがあるかどうか確認を行うことで、下記の良い点があります。

  • エラー発生の可能性が低くなる。
  • 「既にフォルダが存在します。処理を継続しますか?」等の追加対応を設定することが可能になる。


《参考ページ》

https://docs.python.org/ja/3/library/os.html

コメント

タイトルとURLをコピーしました