如何获取当前文件目录的完整路径?

1458 投票
12 回答
2520424 浏览
提问于 2025-04-16 02:28

我该怎么获取当前文件的目录路径呢?

我试过这个:

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'

但是我想要的是:

'C:\\python27\\'

12 个回答

109

在 Python 3.x 中,我这样做:

from pathlib import Path

path = Path(__file__).parent.absolute()

解释:

  • Path(__file__) 是当前文件的路径。
  • .parent 会给你这个文件所在的 文件夹
  • .absolute() 会给你这个文件的 完整绝对路径

使用 pathlib 是处理路径的现代方法。如果你之后需要把它当作字符串使用,只需用 str(path) 转换一下就可以了。

199

从Python 3开始,使用pathlib里的Path是推荐的做法:

from pathlib import Path
print("File      Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute()) # Directory of current working directory, not __file__  

注意:如果你在使用Jupyter Notebook,__file__不会返回你想要的值,所以必须使用Path().absolute()

2713

特殊变量 __file__ 保存了当前文件的路径。通过这个路径,我们可以使用 pathlib 或者 os.path 模块来获取文件所在的目录。

Python 3

要获取正在运行的脚本的目录,可以使用:

import pathlib
pathlib.Path(__file__).parent.resolve()

要获取当前工作目录,可以使用:

import pathlib
pathlib.Path().resolve()

Python 2 和 3

要获取正在运行的脚本的目录,可以使用:

import os
os.path.dirname(os.path.abspath(__file__))

如果你想获取当前工作目录,可以使用:

import os
os.path.abspath(os.getcwd())

注意,file 前后都有两个下划线,而不是一个。

另外,如果你是在交互模式下运行代码,或者是从文件以外的地方加载代码(比如数据库或在线资源),那么 __file__ 可能不会被设置,因为没有“当前文件”的概念。上面的内容假设你是在运行一个存储在文件中的 Python 脚本,这是最常见的情况。

参考资料

  1. Python 文档中的 pathlib
  2. os.path - Python 2.7, os.path - Python 3
  3. os.getcwd - Python 2.7, os.getcwd - Python 3
  4. __file__ 变量的含义和作用是什么?

撰写回答