Python で現在のファイルのパスを取得する

  1. ファイルのパスと現在の作業ディレクトリを取得するための pathlib モジュールの利用
  2. ファイルのパスと現在の作業ディレクトリを取得するために os モジュールを使用する

Python では、多くのファイルやモジュールを扱うことができ、常にファイルシステムと対話しています。ファイルをインポートしたりエクスポートしたりするには、そのようなファイルの正しいパスとディレクトリを知る必要があります。また、現在実行中の Python スクリプトのパスや他のファイルのパスを知ることも不可欠です。

現在の作業ディレクトリは、現在作業している Python のディレクトリです。

このチュートリアルでは、現在のファイルのフルパスと現在の作業ディレクトリを Python で取得する方法を紹介します。

ファイルのパスと現在の作業ディレクトリを取得するための pathlib モジュールの利用

Python 3.x 以降で利用可能な pathlib ライブラリには、ファイルパス関連の問題を扱うクラスやメソッドが含まれています。

以下のコードでは、pathlib モジュールが提供する関数を用いて Python スクリプトのパスを抽出します。

import pathlib

print(pathlib.Path(__file__).parent.absolute())

出力:

C:\Sample\Python

absolute() メソッドはファイルのフルパスを返し、parent() 関数はこのパスからファイルのディレクトリを取得します。

現在の作業ディレクトリを取得するには、上記の関数からファイル名を削除します。以下のコードはその方法を示しています。

import pathlib
print(pathlib.Path().absolute())

出力:

C:\Sample\Python

ファイルのパスと現在の作業ディレクトリを取得するために os モジュールを使用する

os と対話するために os ライブラリが使用され、ファイルのフルパスを取得するために利用可能な関数があります。この方法は Python 2.x でも同様に動作します。

abspath() 関数は必要なファイルのパスを取得し、dirname() 関数はフルパスからディレクトリを取得します。

例えば:

import os

print(os.path.dirname(os.path.abspath(__file__)))

出力:

C:\Sample\Python

関数 dirname() は空の文字列を返すので、ファイルのディレクトリを直接取得することはできません。

また、abspath() 関数の代わりに realpath() 関数を利用することもできます。これはパスからシンボリックリンクが存在する場合にはそれを削除します。

import os

print(os.path.dirname(os.path.realpath(__file__)))

出力:

C:\Sample\Python

現在の作業ディレクトリを取得するには、カレントディレクトリのパスを返す getcwd() 関数を用いることができます。このパスを dirname() 関数に渡してディレクトリを取得することができます。

例えば:

import os
print(os.path.abspath(os.getcwd()))

出力:

C:\Sample\Python

関連記事 - Python Path

  • Python でパスからファイル名を取得する方法