【Python】絶対・相対パス取得・カレントディレクトリのアクセス方法|os・pathモジュールによるファイル操作入門

こんにちは、Kosei(@kay_diacc2)です!

Pythonを用いてファイルの絶対パスや相対パスを取得する方法が知りたい」本記事ではこの要望にお応えします。記事前半は、パスの概要を示し、後半ではpythonを用いたプログラミング手法を紹介しています。

目次

パスとは

図:パスについて

パス「Path」とは目的のフォルダ・ファイルがどこに保存されているのかを示す道筋です。コンピューターが特定のフォルダ・ファイルを見つけるための住所の枠割を担います。

パスは日本語訳すると”道”や”経路”という意味を持ちます。

パスには「絶対パス」と「相対パス」の2種類があります。

絶対パス

パスで最上位の位置をルート(root)といいます。絶対パスとは、ルートフォルダから対象ファイルまでの道筋を示したものです。

絶対パスとは、フルパスとも呼ばれており、最上位に位置するディレクトリ(ルートディレクトリ)から、対象のファイルまでの道順をすべて記述する方法になります。

例えば上図の「目的画像.jpg」の絶対パスは次のように表されます。

User/Folder1/Folder1-2/目的画像.jpg

相対パス

相対パスは、ユーザーが現在いるファイル(カレントディレクトリ)から対象のファイルまでの道筋を指したものです。

ユーザーが現在いるディレクトリと同じ場所に目的ファイルがある場合、相対パスは「./目的ファイル名」という記述になります。

また、ユーザーが現在いるディレクトリと同じ場所にFolderAというフォルダがあり、その直下に目的ファイルが存在する場合、相対パスは「./FolderA/目的ファイル名」と記述できます。

さらに、ユーザーが現在いるディレクトリの1つ上の階層に目的ファイルが存在する場合、相対パスは「../フォルダ名/目的ファイル名」と記述できます。階層が1つ上に行く度に「../」が増え、「../../フォルダ名/目的ファイル名」と記述されます。

【Python】絶対パスの取得方法

Pythonの場合はosモジュールを用いてカレントディレクトリの絶対パスが取得できます。

import os
os.getcwd()

なお、Pythonを用いずともカレントディレクトリまでの絶対パスは下記でも取得可能です。

絶対パス取得方法

OS環境入力コード
Mac(ターミナル)pwd
Linux(シェル)pwd
Windows(コマンドプロンプト)cd

絶対パスの取得|os.path.abspath()

Pythonを用いたアプリケーション実装で絶対パスを取得する場合は、 os.path.abspath()メソッドを用いるのが一般的です。引数のpathにはファイル名またはディレクトリ名(フォルダ名)を指定し、下記のように記載します。

import os
os.path.abspath(path)

例えば、カレントディレクトリを表す’.’と組み合わせて下記のように記載すると、カレントディレクトリまでの絶対パスが取得できます。

import os

# カレントまでの絶対パス取得
os.path.abspath('.')

特定のファイルを指定した場合、ファイルまでの絶対パスが取得できます。

import os

# text.xlsxファイルまでの絶対パス取得
os.path.abspath('test.xlsx')

【Python】相対パスの取得方法

続いてPythonを用いて相対パスを取得する方法について解説します。

目的ファイルの相対パス取得|os.path.basename()

os.path.basename()を用いると、最後部の区切り記号(‘/’)以降のパス情報のみが取得できます。

下記にコード例と出力結果を示します。

import os
path = 'Users/Desktop/Study/Python'

# 最後部のパス情報を取得
os.path.basename(path)

# 出力結果
# 'Python'

目的ファイルまでの相対パス取得|os.path.dirname()

os.path.dirname()を用いると、最後部の区切り記号(‘/’)までのパス情報が取得できます。

下記にコード例と出力結果を示します。

import os
path = 'Desktop/A_Folder/B_Folder/File'

os.path.dirname(path)

# 出力結果
# 'Desktop/A_Folder/B_Folder'

指定したディレクトリからの相対パス取得|os.path.relpath()

os.path.relpath()メソッドを用いるとパスの始まりを自由に指定して相対パスが取得できます。

import os
os.path.relpath(path,start)

例えば、下記のように引数を指定した場合の出力結果を示します。

import os

# startからpathへの相対パスを取得
path = 'Desktop/A_Folder/B_Folder/C_Folder/File'
start = 'Desktop/A_Folder'

os.path.relpath(path,start)

# 出力結果
# 'B_Folder/C_Folder/File'

ここで、引数にstartを指定しなければ、カレントディレクトリからの相対パスが得られます。

ディレクトリを連結|os.path.join()

os.path.join()メソッドにパスとなる引数を指定していくと、左部を上位階層としてパスが連結できます。

下記にコード例と出力結果を示します。

import os
os.path.join('Desktop','フォルダ1','フォルダ2','フォルダ3')

# 出力結果
# 'Desktop/フォルダ1/フォルダ2/フォルダ3'

【Python】パスの情報管理・操作

本サイトではPythonを用いてパス情報管理する解説記事を配信しています。

ファイル・フォルダ情報取得|パスの検査

取得したパスを検査したり、ファイル・フォルダ情報を取得する方法は上記記事にまとめています。

【参考】Pythonによるパスの操作

Pythonを用いてパス操作をマスターしたい方向けにおすすめの教材を紹介します。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる