推荐使用 pathlib.path 处理跨平台路径:自动适配分隔符,支持 / 运算符、.resolve()、.exists() 等链式操作;避免 os.path.join() 和字符串拼接;脚本目录用 path(__file__).parent,项目根目录可向上遍历;与旧代码兼容时用 str(p) 转换。

用 pathlib 是最推荐的跨平台路径处理方式,它自动适配 Windows 的反斜杠 \ 和 Unix/Linux/macOS 的正斜杠 /,语义清晰、可读性强,且无需手动拼接字符串或判断系统。
用 pathlib.Path 构建和操作路径
所有路径操作统一用 Path 对象,支持链式调用,兼容不同操作系统:
- 创建路径:
from pathlib import Path; p = Path("data") / "raw" / "input.csv"(/运算符自动处理分隔符) - 获取绝对路径:
p.resolve()(自动展开..、.和符号链接) - 检查存在性:
p.exists()、p.is_file()、p.is_dir() - 读写文件(简洁安全):
p.read_text(encoding="utf-8")或p.write_bytes(b"...")
避免 os.path 和字符串拼接
os.path.join() 虽然能跨平台,但易出错:嵌套调用难读、类型混用易漏转义、不支持运算符;而直接用 + 或 % 拼接字符串会硬编码分隔符,导致 Windows 下路径失效(如 "data\raw" + "/" + "file.txt")。这些方式都应被 pathlib 替代。
处理相对路径和项目根目录
常见需求是“从当前脚本位置出发找配置文件”或“定位项目根目录”。推荐写法:
立即学习“Python免费学习笔记(深入)”;
- 脚本所在目录:
script_dir = Path(__file__).parent - 项目根目录(假设
src/同级有pyproject.toml):root = Path(__file__).parent.parent或用Path(__file__).resolve().parents[2] - 组合路径更安全:
config_path = script_dir / ".." / "config" / "settings.yaml",再用.resolve()规范化
与旧代码或第三方库兼容时的转换
需要传字符串给 open()、pandas.read_csv() 等函数时,直接用 str(p) 转换;接收字符串路径的函数返回后,可立刻封装为 Path 继续操作。例如:
df = pd.read_csv(str(Path("data") / "processed" / "output.parquet"))p = Path(df.__file__) # 若某库返回字符串路径,转成 Path 再处理









