ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python】ディレクトリ(フォルダ)の作成と削除

 pythonの記事をいくつか書いていましたが、ディレクトリの作成や削除といったものをやってこなかったので、今回はディレクトリ操作についての備忘録です。

 参考資料として挙げたページ様を簡単にまとめた形になるので、詳しく知りたい方はそちらを参照してください。

 では始めます。


1:ディレクトリの作成
 ディレクトリの作成には以下の2通りの方法があります。それぞれの引数には作成したいディレクトリのパスを設定します。

import os

os.mkdir("path") # 新しいディレクトリを作成
os.makedirs("path") # 深いディレクトリまで作成

 os.mkdir関数は、ディレクトリが存在している場合や存在しないディレクトリ内にディレクトリを作ろうとするとエラーになります。

 os.makedirs関数は、引数を設定すればディレクトリが存在している場合は無視したり、存在しないディレクトリ内にディレクトリを作る場合でも再帰的に作成してくれます。

 なので、基本的にはos.makedirs関数を使った方が便利です。

 これら2つの関数の挙動をまとめたサンプルコードが以下になります。

import os

def main():
    os.mkdir("./test1/")
    os.mkdir("./test1/tt/")
    # os.mkdir("./test1/") # すでにディレクトリが存在する場合はエラー
    # os.mkdir("./test4/tt/") # 存在しないディレクトリ内に作成できないのでエラー

    os.makedirs("./test2/")
    # os.makedirs("./test2/") # エラー
    os.makedirs("./test2/", exist_ok=True) # python3.2以降ではexist_ok=Trueでエラーは吐かなくなる(デフォルトはFalse)
    os.makedirs("./test3/tt/") # 存在しないディレクトリでも再帰的に作成

if __name__ == '__main__':
    main()


2:ディレクトリの削除
 ディレクトリの削除方法もいくつかあります。それぞれの引数には削除したいディレクトリのパスを設定します。

import os
import shutil

os.rmdir("path") # 空のディレクトリのみ削除
shutil.rmtree("path") # 対象のディレクトリを中身ごと削除

 os.rmdir関数は、ディレクトリの中身が空でなかった場合はエラーになります。

 shutil.rmtree関数は、ディレクトリ内のものも全て対象ディレクトリごと削除します。

 どちらの関数も対象ディレクトリが存在しない場合はエラーになります。

 基本的にはshutil.rmtree関数を使ってディレクトリごと削除するのが便利です。
 
 これら2つの関数の挙動をまとめたサンプルコードが以下になります。

import os
import shutil

def main():
    os.mkdir("./test4/")
    os.rmdir("./test4/") # 空ディレクトリなので削除できる

    os.makedirs("./test4/tt/", exist_ok=True)
    # os.rmdir("./test4/") # 空のディレクトリではないのでエラー
    shutil.rmtree("./test4/") # 対象ディレクトリごと全部削除

if __name__ == '__main__':
    main()


 以上がpythonでのディレクトリの作成と削除の方法です。

 色々やり方はありますが、作成なら「os.makedirs関数」、削除なら「shutil.rmtree関数」を使うのが良さそうです。


・参考資料