優雅地獲取兩個文件路徑間的相對路徑

一、什麼是相對路徑

在計算機中,每一個文件或文件夾都會被賦予一個唯一的路徑,用來表示這個文件或文件夾在計算機上的位置。而文件路徑的表示方式有兩種,一種是絕對路徑,一種是相對路徑。

相對路徑是指從一個文件或文件夾出發,到達另一個文件或文件夾的路徑。相對路徑比絕對路徑更加靈活,適合用在多台計算機或者不同的目錄結構下。

二、Python中獲取文件路徑的常用方法

在Python中,獲取文件路徑,我們可以使用os模塊和os.path模塊。

其中,os模塊提供了許多函數來操作文件和目錄,如os.listdir(path),os.mkdir(path),os.remove(path)等函數。

而os.path模塊則提供了一些常用的路徑操作函數,如os.path.isfile(path),os.path.isdir(path),os.path.join(path1, path2),os.path.abspath(path)等函數。

三、使用os.path模塊獲取兩個文件路徑間的相對路徑

假設我們有兩個文件路徑,一個是當前文件的路徑,另一個是目標文件的路徑,我們想要獲取兩個文件路徑之間的相對路徑。


import os

def get_relative_path(base_path, target_path):
    # 使用os.path.abspath函數獲取絕對路徑
    base_path = os.path.abspath(base_path)
    target_path = os.path.abspath(target_path)

    # 獲取兩個路徑的公共父路徑
    parent_path = os.path.commonpath([base_path, target_path])

    # 使用os.path.relpath函數獲取相對路徑
    relative_path = os.path.relpath(target_path, parent_path)

    return relative_path

上述代碼中,我們定義了一個get_relative_path函數,它接收兩個參數:當前文件路徑base_path和目標文件路徑target_path。首先,我們使用os.path.abspath函數獲取base_path和target_path的絕對路徑,以避免由於使用相對路徑導致的路徑錯誤。

在獲取了絕對路徑之後,我們使用os.path.commonpath函數獲取兩個路徑的公共父路徑,以確保我們在獲取相對路徑的時候能夠利用公共路徑來計算相對路徑。

最後一步,我們使用os.path.relpath函數獲取相對路徑。

四、示例演示

我們使用上述代碼在Windows和Linux系統下分別演示了獲取兩個文件路徑之間的相對路徑。

Windows系統下獲取相對路徑的示例:


base_path = r'C:\Users\username\Desktop\test1'
target_path = r'C:\Users\username\Desktop\test2\test3\test.txt'
relative_path = get_relative_path(base_path, target_path)
print(relative_path)

輸出結果為:


test2\test3\test.txt

Linux系統下獲取相對路徑的示例:


base_path = '/home/username/Desktop/test1'
target_path = '/home/username/Desktop/test2/test3/test.txt'
relative_path = get_relative_path(base_path, target_path)
print(relative_path)

輸出結果為:


test2/test3/test.txt

五、總結

在Python中,使用os.path模塊提供的relpath函數可以優雅地獲取兩個文件路徑之間的相對路徑。這樣可以使代碼更加簡潔,可讀性更高,同時也可以避免由於路徑錯誤導致的程序錯誤。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301850.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:10
下一篇 2024-12-30 16:10

相關推薦

發表回復

登錄後才能評論