Python获取当前文件所在目录的完整路径

Python获取当前文件所在目录的完整路径

技术背景

在Python编程中,有时需要获取当前文件所在目录的完整路径,比如在读取配置文件、加载数据文件时,需要基于当前文件的位置来确定文件的相对路径。然而,实现这一功能会因Python版本和运行环境的不同而有所差异。

实现步骤

Python 3

使用pathlib模块

  • 获取脚本所在目录
1
2
3
import pathlib
path = pathlib.Path(__file__).parent.resolve()
print(path)
  • 获取当前工作目录
1
2
3
import pathlib
path = pathlib.Path().resolve()
print(path)

Python 2和3通用

使用os.path模块

  • 获取脚本所在目录
1
2
3
import os
path = os.path.dirname(os.path.abspath(__file__))
print(path)
  • 获取当前工作目录
1
2
3
import os
path = os.path.abspath(os.getcwd())
print(path)

Jupyter Notebook环境

在Jupyter Notebook中,__file__变量无法返回预期值,可以使用以下方法:

1
2
3
from pathlib import Path
path = Path().absolute()
print(path)

核心代码

Python 3使用pathlib获取脚本所在目录

1
2
3
from pathlib import Path
path = Path(__file__).parent.absolute()
print(path)

Python 2和3通用使用os.path获取脚本所在目录

1
2
3
import os
path = os.path.dirname(os.path.abspath(__file__))
print(path)

最佳实践

  • 使用pathlib模块:在Python 3中,推荐使用pathlib模块,它提供了面向对象的路径操作方式,代码更简洁易读。
  • 处理__file__未定义的情况:在交互式环境或从非文件资源加载代码时,__file__可能未定义,需要进行相应的错误处理。

常见问题

  • __file__未定义:在交互式环境中运行Python代码时,__file__变量未定义,会引发NameError。可以通过判断是否在交互式环境中来避免使用__file__
  • 路径分隔符问题:在不同操作系统中,路径分隔符不同(Windows使用\,Linux和macOS使用/)。使用os.pathpathlib模块可以自动处理路径分隔符问题。

Python获取当前文件所在目录的完整路径
https://119291.xyz/posts/2025-04-22.python-get-current-file-directory-path/
作者
ww
发布于
2025年4月22日
许可协议