HOWTO · Python

在 Python 中設定檔案路徑

本教程演示如何在 python 中設定檔案路徑。

本頁內容

路徑是用來識別檔案或目錄位置的字串或路徑物件。在 Python 中指定 Windows 路徑時,可以跳脫反斜線或使用原始字串;組合路徑元件時,通常建議使用 pathlib.Path,也可以使用 os.path.join()。建立路徑不會開啟檔案、檢查檔案是否存在、執行檔案,也不會改變 Python 的匯入搜尋路徑。

在 Windows 路徑字串中跳脫反斜線

在一般 Python 字串中,反斜線會引入跳脫序列。Windows 路徑中的每個反斜線都要加倍,例如 "C:\\Users\\Ada\\report.csv"。這樣可避免 \n 等序列被解讀為換行字元。加倍反斜線的寫法是 Python 原始碼中的表示方式;產生的字串在每個分隔處都只包含一個反斜線。

使用原始字串常值表示 Windows 路徑

在字串常值前加上 r,Python 就會保留其中的反斜線,例如 r"C:\Users\Ada\report.csv"。原始字串仍須符合 Python 的字串常值語法,結尾不能有奇數個反斜線,因為最後的反斜線會跳脫結尾引號。如果目錄路徑需要以分隔符結尾,可以再組合一個路徑元件,或改用反斜線已跳脫的一般字串。

使用 os.path.join() 組合路徑

os.path 是一個模組,而 os.path.join() 是其中用來組合路徑元件的函式。請參閱 os.path API。提供目錄和檔名等個別元件,例如 os.path.join("reports", "annual", "summary.csv")。此函式會依照執行中作業系統的路徑慣例處理元件;它不會尋找檔案,也不會選定專案目錄。後續的絕對路徑元件也可能改變結果,因此請明確傳入預期的元件。此 API 頁面是英文;提供的清單中沒有繁體中文目標。

使用 pathlib.Path 建立路徑

一般建構路徑時,pathlib.Path 提供物件導向的介面。你可以用字串建立路徑,再用 / 組合其他元件。這個範例使用相對路徑並印出建構完成的值;它不會存取檔案。下方輸出是 POSIX 執行環境的結果:在 Windows 上顯示相同的 Path 運算式時會使用反斜線。

from pathlib import Path

report_path = Path("reports") / "annual" / "summary.csv"
print(report_path)
reports/annual/summary.csv

顯示出的路徑格式取決於作業系統。Path 會依照目前平台的慣例表示路徑;若要在其他作業系統上操作 Windows 樣式的路徑,而不存取檔案系統,請使用 PureWindowsPath。

建立絕對路徑

絕對路徑會從檔案系統根目錄開始識別位置。在 Windows 上,可使用包含磁碟機代號的路徑,例如 Path(r"C:\Users\Ada") / "reports" / "summary.csv";但相同的寫法在其他作業系統上不一定是絕對路徑。若要建立目前平台的路徑,請從已知的絕對基底開始,例如 Path.home() 或 Path.cwd(),再組合其餘元件。使用 os.path 時,os.path.join(base, "reports", "summary.csv") 會組合路徑元件,而 os.path.abspath(relative_path) 會以程序目前的工作目錄為基準解析相對路徑。這兩種操作都不會確認目標是否存在。

使用相對路徑

相對路徑是從基底目錄而非檔案系統根目錄開始識別位置。例如,Path("data") / "input.csv" 仍是相對路徑。程式使用這類路徑存取檔案系統時,除非程式明確提供其他基底,否則作業系統會以程序目前的工作目錄為基準來解讀路徑。該目錄可能與 Python 指令碼所在目錄不同,因此請選擇符合程式啟動方式的基底。

若路徑要相對於已知目錄,請明確建立該基底,再附加其他元件:project_dir / "data" / "input.csv"。字串路徑也可以使用等效的 os.path.join(project_dir, "data", "input.csv")。這些操作只會建立路徑值;如要讀取、寫入或檢查檔案,請另外使用檔案 API。