os.path.dirname()
用来获取文件的路径。
如:
12 | >>> os.path.dirname('/home/woodenrobot/Documents/LearnPython/test.py')/home/woodenrobot/Documents/LearnPython |
---|
而os.path.dirname(__file__)
是用来获取python文件运行时的路径。
比如有一个test.py脚本内容为:
12 | import osprint(os.path.dirname(__file__)) |
---|
该脚本位于/home/woodenrobot/Documents/LearnPython
文件夹中,分两种情况说明:
12 | (trusty)woodenrobot@localhost:~$ python /home/woodenrobot/Documents/LearnPython/test.py/home/woodenrobot/Documents/LearnPython |
---|
此时会输出该脚本所在的完整路径。
123 | (trusty)woodenrobot@localhost:~/Documents$ python LearnPython/test.pyLearnPython(trusty)woodenrobot@localhost:~/Documents/LearnPython$ python test.py |
---|
此时则会输出其相对路径或空目录。
当你在python自带的IDLE或者python command line中使用会出现以下错误:
12345 | >>> import os>>> os.path.dirname(__file__)Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name '__file__' is not defined |
---|
这是因为此时该段程序并不是从文件夹中运行的,所以并未生成__file__
。