【解析メモ】[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)
いやースッキリ。素晴らしい。
この記事が気に入ったらサポートをしてみませんか?