在 Python 中获取当前路径的完整指南
在 Python 开发中,获取“当前路径”通常有两种不同的含义:一种是当前工作目录(Current Working Directory),另一种是当前脚本文件所在的目录(Script Directory),这两者在运行方式不同时(例如在 IDE 中运行与在命令行中运行)可能会指向不同的位置。
获取当前工作目录 (CWD)
工作目录是指 Python 解释器当前正在运行的文件夹,如果你在终端中 cd 到某个文件夹并运行脚本,该文件夹就是工作目录。
使用 os 模块(传统方法)
- 代码实现:
import os cwd = os.getcwd() print(f"当前工作目录是: {cwd}") - 特点:简单直接,兼容所有 Python 版本。
使用 pathlib 模块(现代方法,推荐)
- 代码实现:
from pathlib import Path cwd = Path.cwd() print(f"当前工作目录是: {cwd}") - 特点:面向对象,路径操作更直观,是 Python 3.4+ 的标准推荐方式。
获取当前脚本文件所在的目录
无论你在哪个目录下启动程序,如果你想获取代码文件本身存放的位置(例如为了读取同级目录下的配置文件),应该使用 __file__ 变量。
使用 os 模块
- 代码实现:
import os # 获取当前脚本的绝对路径 script_path = os.path.abspath(__file__) # 获取脚本所在的文件夹目录 script_dir = os.path.dirname(script_path) print(f"脚本文件所在目录: {script_dir}")
使用 pathlib 模块(推荐)
- 代码实现:
from pathlib import Path # .resolve() 用于获取绝对路径,.parent 获取父级目录 script_dir = Path(__file__).resolve().parent print(f"脚本文件所在目录: {script_dir}")
核心区别对比
为了防止混淆,请参考下表选择合适的方法:
| 需求场景 | 推荐方法 | 关键点 |
|---|---|---|
| 获取用户执行命令时的位置 | Path.cwd() 或 os.getcwd() |
随启动位置而改变 |
| 获取代码文件存放的位置 | Path(__file__).resolve().parent |
随文件存放位置而改变 |
| 拼接路径(如读取配置) | script_dir / "config.ini"
|
建议使用 pathlib 的 运算符 |
常见应用场景:构建绝对路径
在实际项目中,最常见的做法是基于脚本目录构建绝对路径,以避免因启动位置不同而导致的文件找不到(FileNotFoundError)错误。
-
最佳实践代码:
from pathlib import Path # 1. 定位到项目根目录 BASE_DIR = Path(__file__).resolve().parent # 2. 拼接子文件夹中的文件路径 config_path = BASE_DIR / "config" / "settings.json" print(f"配置文件的绝对路径为: {config_path}")
重点总结:
- 如果需要知道“我在哪里运行这个程序” $rightarrow$ 使用
Path.cwd()。 - 如果需要知道“这个代码文件放在哪里” $rightarrow$ 使用
Path(__file__)。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/487936.html
![[30] Python文件路径 | 文件在哪里,代码咋知道](https://i2.hdslb.com/bfs/archive/4f1a15212f0186d8c110ea21fe9f2d84b986c3f1.jpg)


