os.path.dirname(__ file__)返回空

时间:2011-10-16 09:03:07

标签: python

我想获取执行.py文件的当前目录的路径。

例如一个简单的文件D:\test.py,代码为:

import os

print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)

输出是:

,这很奇怪
D:\
test.py
D:\test.py
EMPTY

我期待来自getcwd()path.dirname()的结果相同。

鉴于os.path.abspath = os.path.dirname + os.path.basename,为什么

os.path.dirname(__file__)

返回空?

6 个答案:

答案 0 :(得分:229)

因为os.path.abspath = os.path.dirname + os.path.basename不成立。我们宁愿拥有

os.path.dirname(filename) + os.path.basename(filename) == filename

dirname()basename()仅将传递的文件名拆分为组件,而不考虑当前目录。如果您还想考虑当前目录,则必须明确地这样做。

要获取绝对路径的dirname,请使用

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

答案 1 :(得分:8)

也可以这样使用:

dirname(dirname(abspath(__file__)))

答案 2 :(得分:4)

print(os.path.join(os.path.dirname(__file__))) 

你也可以这样使用

答案 3 :(得分:4)

os.path.split(os.path.realpath(__file__))[0]

os.path.realpath(__file__)返回当前脚本的abspath; os.path.split(abspath)[0]返回当前目录

答案 4 :(得分:2)

import os.path

dirname = os.path.dirname(__file__) or '.'

答案 5 :(得分:1)

从 Python 3.4 开始,您可以使用 pathlib 获取当前目录:

from pathlib import Path

# get parent directory
curr_dir = Path(__file__).parent

file_path = curr_dir.joinpath('otherfile.txt')