【Python】カレントディレクトリの取得方法(osモジュール、pathlibモジュール)

Python ファイル操作

Pythonでカレントディレクトリ(現在の作業ディレクトリ)を取得するには、osモジュールやPathlibモジュールを使う方法が挙げられます。最近ではpathlibの利用も増えてきているようです。

  • osモジュール: os.getcwd()
  • pathlibモジュール: class Path.cwd()

本記事ではこれらの関数の使い方について、具体例を挙げながらまとめます。

osモジュールを使う方法

os.getcwd() を使います。
引数は特にありません。現在の作業ディレクトリを文字列で返します。

# osモジュールをインポート
>>> import os
>>> os.getcwd()
'/home/hibikisan/folder01'

尚、ディレクトリを移動するには、os.chdir() を使います。

>>> os.chdir('./folder02')

# 確認
>>> os.getcwd()
'/home/hibikisan/folder01/folder02'

存在しないディレクトリを指定するとエラーとなります。

>>> os.chdir('./folder99')
Traceback (most recent call last):
    File "<stdin>", line 1, in 
FileNotFoundError: [Errno 2] No such file or directory: './folder99'
参考)現在の作業ディレクトリの呼び方について
カレントフォルダ、カレントディレクトリが一般的でしょうか。
Pythonの公式リファレンスでは、現在の作業ディレクトリ(Currrent working directory)と記述されています。
※関数名に含まれるcwdは、このcurrent working directoryの頭文字ですね

pathlibモジュールを使う方法

具象パスpathlib.Path()のcwd() メソッドを使います。
具体的には下記です。

# pathlibモジュールをインポート
>>> import pathlib

# Pathインスタンスを作成 
>>> p = pathlib.Path()

# カレントディレクトリの取得
>>> p.cwd()
PosixPath('/home/hibikisan/folder01')

Pathオブジェクトは文字列への変換も可能です。

# 文字列への変換も可能
>>> str(p.cwd())
'/home/hibikisan/folder01'

尚、この関数はos.getcwd()を呼び出しています。cwd()メソッドのソースコード(下記)を参照。

@classmethod
def cwd(cls):
    """Return a new path pointing to the current working directory
    (as returned by os.getcwd()).
    """
    return cls(os.getcwd())

Lib/pathlib.py より引用

参考)pathlib — オブジェクト指向のファイルシステムパス

確認した環境

  • OS: Ubuntu20.04LTS@Window 10 WSL2
  • Python3.9.0

まとめ

Pythonでカレントディレクトリを取得する方法として、下記2つの方法を紹介しました。

  • osモジュールを使う方法: os.getcwd()
  • pathlibモジュールを使う方法: Path.cwd()

参考書籍

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project