关于python:解析执行文件路径

Parse the executing file path

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Retrieving python module path
python, path of script

我有一个python文件,我想在执行这个文件时解析路径。如果我像这样运行mypython.py:

1
python ~/Documents/Project/myPython.py

我想知道mypython.py文件中的路径"~/documents/project/"。


sys.argv[0]是由python执行的脚本路径。您可以使用os.path.dirname()从中获取目录名:

1
2
import sys, os
print os.dirname(sys.argv[0])

如果它是在命令行中输入的完整路径,则它依赖于操作系统;macosx和linux都包含该路径。

但是,路径可以根据python调用它的方式而有所不同。另一种选择是使用__file__,您可以使用os.path.abspath()os.path.expanduser()来覆盖所有变化,从而使路径绝对化:

1
print os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))


只需在py文件中编写两条语句:

1
2
          import sys
          print sys.argv[0]


这个例子应该证明是有用的:

测试:PY:

1
2
3
4
import os

print 'Script directory: ' + os.path.realpath(os.path.dirname(__file__))
print 'Working directory: ' + os.getcwd()

终端执行:

1
2
3
4
$ cd ~
$ python ~/Desktop/test.py
Script directory: /Users/tomas/Desktop
Working directory: /Users/tomas