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.pardir 與 os.path.join() 結合使用

os.pardir 是一個指向父目錄的常數字串。在 Windows 和 POSIX 系統(包括 macOS)上,它都是 '..'。

當我們用 os.path.join() 函式將給定路徑與 os.pardir 結合起來,並用 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:\