【python】フォルダの操作方法(作成、存在確認)

2020年3月31日

フォルダの操作に必要なものを用意する(import)

フォルダを操作するにはosモジュールが必要です。
ソース上で osモジュールをインポートすることで使用できます。
フォルダ操作の処理を書く前に インポート することで使用できます。
今回はファイルの1行目でインポートを行っています。

インポート文の書き方(dirSample.pyの1行目に記載)

import os

フォルダを作成する方法(おすすめ)

フォルダ作成方法
関数「makedirs」を使用することでフォルダを作成します。
makeは通常通り「作る」。
dirは「ディレクトリ(directory)」の略となります。 ディレクトリはフォルダの別名です。
なので関数名の意味としてはフォルダ(ディレクトリ)を作る関数となり、直訳するとわかりやすい名前をしています。

第一引数 : 作成したいフォルダ名を入力します。
第二引数 : exist_ok=True ←これから作成するフォルダが存在するのであれば何もしないという引数です。

os.makedirs( {フォルダ名}, exist_ok=True)

「dir1」という名前のフォルダを作成します。

ソースコード

def sample1():
    dirName1 = "dir1"
    os.makedirs( dirName1, exist_ok=True)
    print("フォルダ「" + os.getcwd() + "」にフォルダ名「" + dirName1 + "」を作成しました" )

実行結果

フォルダ「C:\python学習\ディレクトリ操作」にフォルダ名「dir1」を作成しました

フォルダを作成する方法(exist_ok=True)を使用しない方法(おすすめしません)

「exist_ok=True」を引数として与えない場合は既にフォルダがあるとエラーが発生します。
なので、通常はこの引数を入れておくとよいでしょう。
もしどうしても引数として使用したくない場面があったときは例外処理(try-except)を入れておきましょう

ソースコード

def sample2():
    dirName2 = "dir2"
    
    print("フォルダ「" + os.getcwd() + "」にフォルダ「" + dirName2 + "」を作成します。")
    
    try:
        os.makedirs(dirName2)
        print("フォルダの作成が完了しました。")
    except:
        import traceback
        traceback.print_exc()
        print("フォルダ「" + dirName2 + "」は既に存在するのでエラーになります")

一回目の実行結果(フォルダ作成成功)

フォルダ : C:\python学習\ディレクトリ操作にフォルダ「dir2」を作成します。
フォルダの作成が完了しました。

二回目の実行結果(フォルダ作成失敗)

Traceback (most recent call last):
  File "dirSample.py", line 16, in sample2
    os.makedirs(dirName2)
  File "C:\Users\****\AppData\Local\Programs\Python\Python36-32\lib\os.py", line 220, in makedirs
    mkdir(name, mode)
FileExistsError: [WinError 183] 既に存在するファイルを作成することはできません。: 'dir2'
フォルダ「dir2」は既に存在するのでエラーになります

フォルダの存在確認

関数「isdir」を使用すると指定したフォルダがあるか確認できます。

第一引数 : 存在するか確認したいファイルになります。
戻り値 : 第一引数のフォルダが存在するとTrueを存在しない場合はFalseが返却されます。
bool型で返却される為、そのままIF文で使用できます。

関数の使い方

os.path.isdir({フォルダ名})

ソースコード

def sample3():
    dirName3 = "dir3"
    
    print("フォルダ「" + os.getcwd() + "」にフォルダ「" + dirName3 + "」を作成します。")
    
    if not os.path.isdir(dirName3): #フォルダの存在確認
        os.makedirs(dirName3)
        print("フォルダ「" + dirName3 + "」は存在しないので作成しました。")
    else:
        print("フォルダ「" + dirName3 + "」は存在するので作成しません。")

プログラムを最初に実行すると 関数「isdir」の戻り値はフォルダがないので「False」を返却します。
if文ではnotで真偽を反転させているので条件成立となり、makedirsが実行されてフォルダを作成します。

一回目の実行結果(フォルダが存在しない状態)

フォルダ「dir3」は存在しないので作成しました。

2回目のプログラム実行では既にフォルダ「dir3」を作成している為、関数「isdir」の戻り値は「True」を返却します。
notで反転しているので不成立となりelse内を実行します。

二回目の実行結果(フォルダが存在する状態)

フォルダ「C:\python学習\ディレクトリ操作」にフォルダ「dir3」を作成します。
フォルダ「dir3」は存在するので作成しません。

ソースコードはこちら