HOWTO · Python

Python で親ディレクトリを取得する

このチュートリアルでは、Python でパスの親ディレクトリを取得する方法を説明します。

このページの内容

このチュートリアルでは、Python でパスの親ディレクトリを取得するための様々な方法を説明します。親ディレクトリとは、与えられたディレクトリやファイルのすぐ上にあるディレクトリのことです。例えば、パス C:\folder\subfolder\myfile.txt の親ディレクトリは C:\folder\subfolder となります。ルートディレクトリ以外のすべてのディレクトリには、それとは異なる親ディレクトリがあります。ルートディレクトリの親はルートディレクトリ自体です。

Path.parent でパスの親ディレクトリを取得する

pathlib モジュールはパスを Path オブジェクトとして表します。その parent プロパティは、パスの論理上の親を別の Path オブジェクトとして提供します。親を文字列として必要な場合は str() で包んでください。呼び出すものも、渡す引数もありません。構築した Path からプロパティを読むだけです。

以下のサンプルコードは、parent プロパティを使って Python でパスの親ディレクトリを取得する方法を示しています。

from pathlib import Path

path1 = Path(r"C:\folder\subfolder\myfile.txt")
path2 = Path(r"C:\Myfile.txt")
print(path1.parent)
print(path2.parent)

出力:

C:\folder\subfolder
C:\

os.path.join() で os.pardir を使う

os.pardir は親ディレクトリを指す定数文字列です。Windows でも POSIX システム(macOS を含む)でも '..' です。

与えられたパスと os.pardir を関数 os.path.join() で組み合わせ、その結果を os.path.abspath() で正規化すると、与えられたパスの親ディレクトリが得られます。

以下のサンプルコードは、os.pardir と os.path.join() を使ってパスの親ディレクトリを取得する方法を示しています。

import os.path

path1 = r"C:\folder\subfolder\myfile.txt"
path2 = r"C:\Myfile.txt"

print(os.path.abspath(os.path.join(path1, os.pardir)))
print(os.path.abspath(os.path.join(path2, os.pardir)))

出力:

C:\folder\subfolder
C:\

上記のように、os.pardir を '..' に置き換えても同じ結果が得られます。

import os.path

path1 = r"C:\folder\subfolder\myfile.txt"
path2 = r"C:\Myfile.txt"

print(os.path.abspath(os.path.join(path1, "..")))
print(os.path.abspath(os.path.join(path2, "..")))

出力:

C:\folder\subfolder
C:\

os.path.dirname() でパスの親ディレクトリを取得する

os.path.dirname() は、パス文字列を入力として受け取り、パスのディレクトリ部分、つまり最後のパス区切り文字までのすべてを返す関数です。ファイルを指すパスの場合、そのディレクトリ部分が親ディレクトリであり、文字列として返されます。

以下のサンプルコードは、os.path.dirname() を使ってパスの親ディレクトリを取得する方法を示しています。

import os.path

path1 = r"C:\folder\subfolder\myfile.txt"
path2 = r"C:\Myfile.txt"

print(os.path.dirname(path1))
print(os.path.dirname(path2))

出力:

C:\folder\subfolder
C:\