获取文件路径引用的模块可以有:sys/os
用sys.args[0]参数是获得主执行文件路径的最佳方法;
也可以调用__file__这个参数,但是"__file__" 是用来获得模块所在的路径的;具体如下:
1 #!/usr/bin/env python 2 # coding: utf-8 3 4 import sys 5 import os 6 7 jms_dir = os.path.dirname(os.path.abspath(os.path.dirname(__file__))) 8 print "sys.argv[0]获取主执行文件路径的最佳方法,它可能是一个相对路径 ---------->>>> ",sys.argv[0] 9 print "__file__ 是用来获得模块所在的路径的,这可能得到的是一个相对路径 ---------->>>> ",__file__ 10 print "os.path.dirname(__file__)获取__file__的相对目录 ---------->>>> " ,os.path.dirname(__file__) 11 print "os.path.abspath(__file__)表示获取__file__模块的绝对路径 ---------->>>> ",os.path.abspath(__file__) 12 print "os.path.abspath(sys.argv[0])表示获取的绝对路径 ---------->>>> ",os.path.abspath(sys.argv[0]) 13 print "os.path.dirname(os.path.abspath(os.path.dirname(__file__))) ---------->>>> ",jms_dir 14 print "os.path.abspath(os.path.dirname(__file__)) ---------->>>> ",os.path.abspath(os.path.dirname(__file__)) 15 print "os.path.dirname(os.path.abspath(__file__)) ---------->>>> " ,os.path.dirname(os.path.abspath(__file__))
结果为:
1 [root@localhost hejoy]# ./q.py 2 sys.argv[0]获取主执行文件路径的最佳方法,它可能是一个相对路径 ---------->>>> ./q.py 3 __file__ 是用来获得模块所在的路径的,这可能得到的是一个相对路径 ---------->>>> ./q.py 4 os.path.dirname(__file__)获取__file__的相对目录 ---------->>>> . 5 os.path.abspath(__file__)表示获取__file__模块的绝对路径 ---------->>>> /home/hejoy/q.py 6 os.path.abspath(sys.argv[0])表示获取的绝对路径 ---------->>>> /home/hejoy/q.py 7 os.path.dirname(os.path.abspath(os.path.dirname(__file__))) ---------->>>> /home 8 os.path.abspath(os.path.dirname(__file__)) ---------->>>> /home/hejoy 9 os.path.dirname(os.path.abspath(__file__)) ---------->>>> /home/hejoy