Python中os.path.dirname(__file__)的用法

os.path.dirname()的用途

os.path.dirname()用来获取文件的路径。
如:

1
2
>>> os.path.dirname('/home/woodenrobot/Documents/LearnPython/test.py')
/home/woodenrobot/Documents/LearnPython

os.path.dirname(file)的用途

os.path.dirname(__file__)是用来获取python文件运行时的路径。
比如有一个test.py脚本内容为:

1
2
import os
print(os.path.dirname(__file__))

该脚本位于/home/woodenrobot/Documents/LearnPython文件夹中,分两种情况说明:

1.当程序脚本以完整路径运行时

1
2
(trusty)woodenrobot@localhost:~$ python /home/woodenrobot/Documents/LearnPython/test.py
/home/woodenrobot/Documents/LearnPython

此时会输出该脚本所在的完整路径。

2.当程序脚本以相对路径运行时

1
2
3
(trusty)woodenrobot@localhost:~/Documents$ python LearnPython/test.py
LearnPython
(trusty)woodenrobot@localhost:~/Documents/LearnPython$ python test.py

此时则会输出其相对路径或空目录。

注意

当你在python自带的IDLE或者python command line中使用会出现以下错误:

1
2
3
4
5
>>> import os
>>> os.path.dirname(__file__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__file__' is not defined

这是因为此时该段程序并不是从文件夹中运行的,所以并未生成__file__

参考

  1. Python零碎知识(9):有关 os.path.dirname(file)
  2. python中os.path.dirname(file)的使用
  3. Python 模块学习:os模块
给我加个菜?