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

我想要得到执行.py文件的当前目录的path。

一个简单的文件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__) 

返回空?

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

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

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

要获取绝对path的dirname,请使用

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

也可以这样使用:

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

你也可以用这种方式

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

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

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