概要
実現方法・説明
「os.makedirs()」を使う
Pythonで新しいディレクトリを作成したい時は
os.makedirs() 関数を使う。
こんな感じ。
os.makedirs(A)
もちろん、引数のAには、
作成したいディレクトリを表すパスの文字列を渡す。
注意点
パスは絶対パスでも相対パスでもいいが
存在するディレクトリのパスを指定するとエラーになる。
※本ページ「ex.3」で説明する「exist_ok=True」を付与するとエラーを回避可能
使用例
動作確認環境:Python3.6 / macOS 10.13.5
ex.1 絶対パスを指定したディレクトリの作成
絶対パスを指定してディレクトリを作成してみよう。
ここで、作成したいディレクトリを
「/Users/taka/Desktop/NewDir」とすると
import os os.makedirs('/Users/taka/Desktop/NewDir') os.chdir('/Users/taka/Desktop/NewDir') print('ex.1 :' + os.getcwd())
(実行結果)
ex.1 :/Users/taka/Desktop/NewDir
3行めが、ディレクトリを作成している部分だ。
4〜5行めは、作成されたことの確認を兼ねて
作成したディレクトリをカレントにした上で
パスを表示している。
ちなみに、フルパスで指定した中で
存在しないディレクトリがあればすべて作成する。
例えば、Aディレクトリのみ存在した状態で
以下のようなコードを実行すると
ディレクトリB,Cが同時に作成される、ということである。
os.makedirs(‘/A/B/C’)
ex.2 相対パスを指定したディレクトリの作成
今度は相対パスを指定してディレクトリを作成してみよう。
カレントディレクトリを「/Users/taka/Desktop」とすると
import os os.chdir('/Users/taka/Desktop') os.makedirs('NewDir2') os.chdir('/Users/taka/Desktop/NewDir2') print('ex.2 :' + os.getcwd())
(実行結果)
ex.2 :/Users/taka/Desktop/NewDir2
3行目で、予めカレントディレクトリの設定をしている。
そして、4行めで、ディレクトリを作成している。
ex.1と異なるのは、ディレクトリ名のみで指定していること。
これで、カレントディレクトリに
指定した名前のディレクトリが作成される。
6〜7行めは、ex.1と同様
作成されたことの確認を兼ねた処理。
ex.3 既にディレクトリが存在する場合の対処
ディレクトリの作成については以上だが
もしも、存在するディレクトリを指定したらどうなるだろう。
import os os.makedirs('/Users/taka/Desktop/NewDir') os.makedirs('/Users/taka/Desktop/NewDir')
(実行結果)
FileExistsError: [Errno 17] File exists: ‘/Users/taka/Desktop/NewDir’
これは、冒頭でも説明した通り、エラーになり
「FileExistsError」が発生する。
そして例外処理を書かない限り
そこでプログラムは停止する。
これでは不便だ、ディレクトリがない場合は作成するが
ある場合は何もしないようにしたい、というと場合もある。
こんなときは、os.path.exists()や
os.path.isdir()などを使って
ディレクトリの存在チェックをしてから
ディレクトリの作成をしてもいいが、こんなことも出来る。
import os os.makedirs('/Users/taka/Desktop/NewDir', exist_ok=True)
このように書くと、既にディレクトリが存在すれば
何もせず、次のコードを実行する。
もちろん、 exist_ok=Falseと書くと
既にディレクトリが存在すればエラーになる。
その時々で使い分けるといいだろう。
補足
Pythonは、主だったOSコマンドは関数化されているので
シェルのようなプログラミングも
ストレスなく書くことが出来る。
Pythonバンザイ