os.path.dirname(__file__) 返回空

新手上路,请多包涵

我想获取执行 .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__)

返回空?

原文由 Flake 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 950
2 个回答

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

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

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

要获取绝对路径的目录名,请使用

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

原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 3.0 许可协议

import os.path

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

原文由 Deve 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题