15 Python 路径设置
在 Python 数据分析和科学计算项目中,文件路径的设置是最容易被初学者忽视但又至关重要的一个环节。路径的写法直接关系到数据能否顺利读取、结果能否正确保存、代码能否方便迁移和团队协作。
假设有如下常见的项目结构:
project/
├── data/
│ └── train.csv
├── scripts/
│ └── 02_regress.ipynb
├── 01_data_clean.ipynb
└── README.md
15.1 路径的基本类型
绝对路径 直接写明从磁盘根目录开始的完整路径,如
C:/Users/lian/project/data/train.csv
。优点是直观,缺点是只能在自己的电脑上用,可移植性很差。相对路径 以「当前工作目录」为起点的路径,写法更灵活,比如
data/train.csv
、./data/train.csv
或../data/train.csv
。团队协作和跨平台推荐使用相对路径。
15.1.1 路径中的常用符号
.
表示当前目录..
表示上一级目录/
是路径分隔符,推荐在所有平台上都用/
(Windows 也支持)
15.1.2 当前工作目录
Python 在读取文件时,所有相对路径都是以当前工作目录为基准。 你可以用如下代码查看:
如果你在 project/
目录下打开并运行 .ipynb
或 .py
文件,那么:
data/train.csv
./data/train.csv
这两种写法都表示访问 project/data/
目录下的 train.csv
文件。
15.2 子目录和上级目录的写法
如果你在 scripts/02_regress.ipynb
中想读取 data/train.csv
:
- 路径写法应为
../data/train.csv
表示从scripts/
目录返回上一层(即project/
),再进入data/
。
例子:
如果在 project/
目录下运行 01_data_clean.ipynb
:
15.3 路径设置方法
基本原则
- 使用相对路径,并以项目主目录作为入口,这样团队成员和后续自动化运行都不会因路径错乱而报错。
- 不要随意修改当前工作目录,如果确实需要,可以用
os.chdir()
,但推荐只在顶层脚本中使用。 - 建议统一用
/
做路径分隔符,避免不同操作系统兼容性问题。
15.3.1 动态拼接路径的安全写法
Python 推荐用 os.path.join()
或 pathlib.Path
自动拼接路径,增强可移植性:
或用 pathlib
:
15.3.2 Jupyter Notebook、VS Code 下的路径问题
- Jupyter Notebook 的当前工作目录一般为你启动 Notebook 时所在的文件夹。
- VS Code 运行时,也以「打开文件夹」为当前工作目录。
- 路径错误时优先检查
os.getcwd()
输出。
15.4 应用
15.4.1 批量读取目录下文件
如果要读取 data/
目录下所有 csv 文件:
15.4.2 数据导入与结果保存范例
15.5 路径设置最佳实践
- 明确项目目录结构,所有数据、脚本、输出分目录管理。
- 路径全部写成相对路径,推荐以项目主目录为基准。
- 多人协作时保证路径一致,避免硬编码本地绝对路径。
- 重要脚本和 Notebook 开头加一句
print(os.getcwd())
,方便调试和定位路径问题。 - 文件找不到,多半是路径写错或者工作目录理解有误。 用
os.getcwd()
确认,再对照实际项目结构检查路径。 - 不同系统分隔符问题,统一用
/
,或用路径拼接函数自动处理。