协慌网

登录 贡献 社区

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

我想获取当前文件的目录路径。我试过了:

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

但是,如何检索目录的路径?

例如:

'C:\\python27\\'

答案

Python 3

对于正在运行的脚本的目录:

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

对于当前工作目录:

import pathlib
pathlib.Path().absolute()

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 2.7os.path 3.8
  3. os.getcwd 2.7os.getcwd 3.8
  4. __file__变量的含义 / 作用是什么?

从 Python 3 开始,建议使用Path

from pathlib import Path
print("File      Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute())

文档: pathlib

注意:如果使用 Jupyter Notebook,则__file__不会返回期望值,因此必须使用Path().absolute()

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

from pathlib import Path

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

说明:

  • Path(__file__)是当前文件的路径。
  • .parent为您提供文件所在的目录
  • .absolute()提供了完整的绝对路径。

使用pathlib是使用路径的现代方法。如果由于某种原因以后需要它作为字符串,只需执行str(path)