見出し画像

【解析メモ】[python]ディレクトリが無ければ作る

■ os.makedirs

 pythonで新しいディレクトリを作りたいときは、以下のようにos.makedirs(作りたいディレクトリ名)で大丈夫。

import os

dir = '/home/[ユーザ名]/output/yyyy/mm/dd/'  # 作りたいディレクトリ名
os.makedirs(dir)  # 作る

 ただし、この書き方だと既にあるディレクトリ名を指定してしまうとエラーで落ちてしまう。つまり1回しか使えないコードになってしまう。これはとても面倒くさい。

 そこで「既にディレクトリがあれば何もしない。無ければ作る。」という処理を行いたいときがある。そんな時は、os.path.existsと組み合わせて、

dir = '/home/[ユーザ名]/output/yyyy/mm/dd/'  # 作りたいディレクトリ名

if not os.path.exists(dir):   # 無ければ
  os.makedirs(dir)        # 作る

と書いたりする。しかしこの書き方も正直ちょっと面倒くさい。2行になるし、if notから入るし、sysだったかosだったか忘れるし、existと書いて怒られるし、if文ミスってある時に作ろうとして怒られるし、、、

■ これだけ覚えとく

 そこでos.makedirsにはexist_okというオプション※があるようで、こいつが全てを解決してくれる。mkdir -pのように深い階層も一気に作ってくれるし、既にあれば黙ってスルーするだけでエラーを出さないし、1行で済むし、面倒くさがりで忘れっぽい人には最適なオプションだ。
(※python 3.2以降のようです。)

・・・という事で、pythonでディレクトリが無ければ作る。あれば無視する。をやりたい時は以下でOKのようです。

import os

os.makedirs([作りたいディレクトリ名], exist_ok=True)

いやースッキリ。素晴らしい。

この記事が気に入ったらサポートをしてみませんか?