ファイルの読み書きをするときは、ファイルの保存場所までのパスを指定します。
パスの結合は、os.path.join()を使用すると、簡単に結合することができます。
パスを結合する方法
パス(path)は、ファイルやフォルダのある場所やそこにあるファイルのことを示す情報です。
パスは、OSによって階層を表す区切りの表現が違っています。
・Windows系: C:\Users\user 「\(円マーク、バックスラッシュ)」で区切り
・Unix(Mac)系: /Users/user 「/(スラッシュ)」で区切り
区切りに使用する文字の確認には、os.path.sepを使用します。
例示で使用しているPythonは、Windowsで動作しています。
print(os.path.sep)
\
OSによる区切りの違いを気にしないでパスを結合するには、os.path.join()を使用します。
os.path.join()
基本的な使い方は、os.path.join()に結合するパスの文字列を渡すだけです。
import os
folder_path = os.path.join('C:\\', 'Users', 'user')
folder_path
'C:\\Users\\user'
リストからパスを作る
join()の引数はリストで渡すこともできます。
注意点は、リストを展開して渡すこと。
サンプルコードでは、join()の引数として渡したlist_pathの頭の*(アスタリスク)がリストを展開しています。
import os
list_path = ['C:\\', 'Users', 'user']
folder_path = os.path.join(*list_path)
folder_path
'C:\\Users\\user'
フォルダの存在を確認する
作成したパスが存在するかチェックするには、os.path.exists()を使用します。
os.path.exists()
os.path.exists()の引数にパスを渡して存在を確認します。
パスが存在するときはTrue、存在しないときはFalseが返ってきます。
folder_path = os.path.join('C:\\', 'Users', 'user')
os.path.exists(folder_path)
True
フォルダを作成する
新しくフォルダを作成するときは、os.makedirs()を使用します。
フォルダ「user」の中に、新しくフォルダ「potesara」を作成します。
まずは、存在を確認します。
import os
list_path = ['C:\\', 'Users', 'user', 'potesara']
folder_path = os.path.join(*list_path)
os.path.exists(folder_path)
False
os.makedirs ()
folder_pathで存在しないことを確認したフォルダ「potesara」を作成します。
os.makedirs()は、末端のフォルダを作成するために必要なすべての中間フォルダも作成するので、フォルダ「potesara」の中に、フォルダ「dansyaku」を作ることもできます。
os.makedirs()で存在するフォルダを引数で渡すとエラーになります。
これは、第二引数のexist_okがデフォルトではFalseになっていることで、引数のフォルダが存在するとエラーを返しています。
exist_okをTrueにしても、存在するフォルダを上書きすることはありません。
Trueを設定しておくことで、再度コードを実行するときにエラーが発生しなくて便利です。
os.makedirs(folder_path, exist_ok=True)
# 存在の確認
os.path.exists(folder_path)
True
まとめ
- os.path.join()を使用してパスを作成できた
- リストからパスを作成するときは、join()の引数に*を付けてリストを展開した
- os.path.exists()でパスの存在を確認できた
- os.makedirs ()でフォルダを作成できた