总结一下python获取目录的方法

在/usr/local/scripts 目录下创建一个basedir.py,具体内容如下

# -*- encoding=utf-8 -*-
import os, sys
print("__file__ = %s" % __file__)
print("os.path.realpath(__file__) = %s" % os.path.realpath(__file__))
print("os.path.dirname(os.path.realpath(__file__)) = %s" % os.path.dirname(os.path.realpath(__file__)))
print("os.path.split(os.path.realpath(__file__)) = %s" % os.path.split(os.path.realpath(__file__))[0])
print("os.path.abspath(__file__) = %s" % os.path.abspath(__file__))
print("os.path[0] = %s" % sys.path[0])
print("os.getcwd() = %s" % os.getcwd())
print("sys.argv[0] = %s" % sys.argv[0])
在/usr/local/scripts/mysql 目录下执行python basedir.py,结果如下
__file__ = basedir.py
os.path.realpath(__file__) = /usr/local/scripts/mysql/basedir.py
os.path.dirname(os.path.realpath(__file__)) = /usr/local/scripts/mysql
os.path.split(os.path.realpath(__file__)) = /usr/local/scripts/mysql
os.path.abspath(__file__) = /usr/local/scripts/mysql/basedir.py
os.path[0] = /usr/local/scripts/mysql
os.getcwd() = /usr/local/scripts/mysql
sys.argv[0] = basedir.py
在root目录下执行python /usr/local/scripts/mysql/basedir.py,结果如下
__file__ = /usr/local/scripts/mysql/basedir.py
os.path.realpath(__file__) = /usr/local/scripts/mysql/basedir.py
os.path.dirname(os.path.realpath(__file__)) = /usr/local/scripts/mysql
os.path.split(os.path.realpath(__file__)) = /usr/local/scripts/mysql
os.path.abspath(__file__) = /usr/local/scripts/mysql/basedir.py
os.path[0] = /usr/local/scripts/mysql
os.getcwd() = /root
sys.argv[0] = /usr/local/scripts/mysql/basedir.py
os.path[0] 获得的是脚本文件的所在目录
os.getcwd() 获得的是执行脚本时是在的目录
正确获取脚本所在路径的命令为
os.path.split(os.path.realpath(__file__))[0]