使用するのは 関数 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_A と 01_B の両方のフォルダが作成されます。
末端フォルダを作成するために、必要なすべての中間フォルダを作成してくれるのです。
追加情報
既にフォルダがあるかどうか確認を行うことで、下記の良い点があります。
- エラー発生の可能性が低くなる。
- 「既にフォルダが存在します。処理を継続しますか?」等の追加対応を設定することが可能になる。
《参考ページ》
コメント