在python下,获取当前执行主脚本的方法有两个: sys.argv[0]和__file__。
sys.argv[0]
获取主执行文件路径的最佳方法是用sys.argv[0],他可能是一个相对路径,所以在取一下abspath是保险做法:
import os, sys
dirname,filename = os.path.split(os.path.abspath(sys.argv[0]))
file
file 是用来获得木块所在的路径的,这可能得到的是一个相对路径,比如在脚本test.py中写入:
#! /usr/bin/env python
print __file__
- 按照相对领 ./text.py来执行,则打印得到的是相对路径
- 按照绝对路径则得到的是绝对路径
- 而按照用户目录来执行(~/practice/test.py),得到的也是绝对路径(~被展开)
- 所以为了得到绝对路径,需要 os.path.reslpath(file)
- 得到文件名称,os.path.basename(file)
在Python控制台下,直接使用 print __file__会导致 name 'file' is not defined错误,因为这时没有在任何一个脚本下执行,所以__file__没有定义。
file 和 argv[0] 的差异
在主执行文件中,俩者之间没有什么差异,不过要是在不同文件下,就不一样了