os.getcwd関数とPath.cwdメソッドでカレントディレクトリを取得したり、os.chdir関数でカレントディレクトリを移動したりする方法を紹介する。
# カレントディレクトリの取得
import os
d = os.getcwd()
print(d)
from pathlib import Path
d = Path.cwd()
print(d)
print(type(d))
# カレントディレクトリの移動
import os
os.chdir('..')
d = os.getcwd()
print(d)
Pythonでカレントディレクトリ(作業ディレクトリ)を取得するには幾つかの方法がある。代表的なのは以下の2つだ。
カレントディレクトリを移動するにはosモジュールのchdir関数を使用する。
カレントディレクトリを取得する最も一般的な方法はosモジュールのgetcwd関数を呼び出すことだろう。以下に例を示す。
import os
d = os.getcwd()
print(d)
この関数はパラメーターを持たず、呼び出すとカレントディレクトリを表す文字列を返してくる。
macOSでの実行結果の例を以下に示す。
Windowsでの実行結果の例を以下に示す。
pathlibモジュールのPathクラスにはcwdクラスメソッドがあり、これを使っても同様な処理が行える。以下に例を示す。
from pathlib import Path
d = Path.cwd()
print(d)
print(type(d))
os.getcwd関数と異なるのは、Path.cwdクラスメソッドはカレントディレクトリを表すPathオブジェクト(実際にはPosixPathオブジェクトまたはWindowsPathオブジェクト)を返す点だ。
macOSでの実行結果の例を以下に示す。
Windowsでの実行結果の例を以下に示す。
返送されたオブジェクトの型がmacOSではPosixPathに、WindowsではWindowsPathになっている点に注目されたい。
なお、カレントディレクトリを表すPathオブジェクトを作成して、resolveメソッドを呼び出すという方法もあるが、このメソッドはパス操作の際に、最終的にカレントディレクトリを表す「.」や上位ディレクトリを表す「..」を含んだパスを絶対パスとする必要が出てきた時点で使用するものだと考えた方がよいだろう。
d = Path('.').resolve()
print(d)
カレントディレクトリ(作業ディレクトリ)を移動するにはosモジュールのchdir関数を使用する。同等な関数/メソッドはpathlibモジュールにはない。この関数はパス(相対パス/絶対パス)を表す文字列やPathオブジェクトを引数に受け取り、指定されたパスをカレントディレクトリとする。
以下に例を示す。
import os
os.chdir('..')
d = os.getcwd()
print(d)
この例では1つ上位のディレクトリである「..」を引数に指定している。そのため、先ほどの例で見たカレントディレクトリの親ディレクトリが新しいカレントディレクトリとなる。
Pathオブジェクトを使用する場合なら以下のようになる。
os.chdir(Path('..'))
移動先のディレクトリが決め打ちであれば、Pathオブジェクトを使わずに文字列でパスを指定するのがよいだろう。そうではなく、何らかの計算でパスを求めているのであれば、このような書き方をすることも出てくるかもしれない。
Copyright© Digital Advantage Corp. All Rights Reserved.