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。