Python获取文件路径

sys.argv[0]

返回值可能是一个相对路径,所以再取一下abspath是保险的做法。

1
2
3
4
5
6
7
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
import os
import sys
path_to_script, filename = os.path.split(os.path.abspath(sys.argv[0]))
print "running from", path_to_script
print "file is", filename

__file__

  • 按相对路径./test.py来执行,则打印得到的是相对路径;
  • 按绝对路径执行则得到的是绝对路径;
  • 而按用户目录来执行(~/practice/test.py),则得到的也是绝对路径(~被展开);
  • 所以为了得到绝对路径,我们需要 os.path.realpath(file)。