Pythonでカレントディレクトリを取得、変更(移動)

Modified: | Tags: Python, ファイル処理

Pythonが実行されている作業ディレクトリ(カレントディレクトリ)を取得し確認、変更(移動)するには、os.getcwd()os.chdir()を使う。

osモジュールは標準ライブラリに含まれているので追加のインストールは必要ないが、インポートは必要。

なお、実行しているスクリプトファイル(.py)のパスは__file__で取得できる。以下の記事を参照。

カレントディレクトリを取得・確認: os.getcwd()

os.getcwd()は現在Pythonが実行されている作業ディレクトリ(カレントディレクトリ)の絶対パスを文字列として返す。

print()で出力し確認できる。

import os

path = os.getcwd()

print(path)
# /Users/mbp/Documents/my-project/python-snippets/notebook

print(type(path))
# <class 'str'>

getcwdは「get current working directory」の略。ちなみにUNIXのpwdコマンドは「print working directory」の略。

パス文字列の処理にはos.pathを使うと便利。詳細は以下の記事を参照。

カレントディレクトリを変更(移動): os.chdir()

os.chdir()で作業ディレクトリ(カレントディレクトリ)を変更できる。

引数に移動先のパスを指定する。絶対パスでも相対パスでもよい。上の階層への移動は'..'

UNIXのcdコマンドと同じように移動し、カレントディレクトリを変更できる。

os.chdir('..')

print(os.getcwd())
# /Users/mbp/Documents/my-project/python-snippets

os.chdir('notebook/data')

print(os.getcwd())
# /Users/mbp/Documents/my-project/python-snippets/notebook/data

chdirは「change directory」の略。cdと同じ。

実行しているスクリプトファイル(.py)があるディレクトリに移動する場合は__file__およびos.pathの関数を使う。

os.chdir(os.path.dirname(os.path.abspath(__file__)))
source: file_path.py

詳細は以下の記事を参照。

pathlibでのカレントディレクトリの取得・移動: Path.cwd()

pathlibはパスをオブジェクトとして操作するモジュール。標準ライブラリに含まれている。

Pathのクラスメソッドであるcwd()はカレントディレクトリの絶対パスのPathオブジェクトを返す。

from pathlib import Path

p = Path.cwd()
print(p)
# /Users/mbp/Documents/my-project/python-snippets/notebook

print(type(p))
# <class 'pathlib.PosixPath'>

OSによってPosixPathまたはWindowsPathのインスタンスが生成される。Pathの基本については以下の記事を参照。

ドキュメントには明記されていないが、Pathのインスタンスからもcwd()を呼べる。

print(p.cwd())
# /Users/mbp/Documents/my-project/python-snippets/notebook

pathlibにはカレントディレクトリを変更するメソッドはないので、上述のos.chdir()を使う。os.chdir()の引数にはPathオブジェクトをそのまま指定可能。

import os

os.chdir(p.parent)

print(Path.cwd())
# /Users/mbp/Documents/my-project/python-snippets

os.chdir(p / 'data')

print(Path.cwd())
# /Users/mbp/Documents/my-project/python-snippets/notebook/data

上の例のように、parent属性で親ディレクトリのPathを取得したり、/演算子でパスを連結したりできる。

pathlibにおける絶対パスと相対パス、ファイル名や親ディレクトリの取得などについての詳細は以下の記事を参照。

関連カテゴリー

関連記事