python:argv[0]、path[0]以及__file__区别与简单应用

#coding=utf-8
import sys
import os
'''
以绝对路径运行脚本时:
'''
print('{0}:{1}'.format("sys.argv[0]",sys.argv[0]))
print('{0}:{1}'.format("sys.path[0]",sys.path[0]))
print('{0}:{1}'.format("os.getcwd()",os.getcwd()))

结果:

分析:

sys里提供的

argv[0]:提供执行脚本运行时的路径(因为以绝对路径运行脚本于是打印出来的是脚本的绝对路径)

path[0]:提供执行脚本目录

os.getcwd()同sys.path[0]

help(sys)也可以找到下面的说明

接下来看以相对路径执行脚本时:

#coding=utf-8
import sys
import os
'''
以相对路径运行脚本时:
'''
print('{0}:{1}'.format("sys.argv[0]",sys.argv[0]))
print('{0}:{1}'.format("sys.path[0]",sys.path[0]))
print('{0}:{1}'.format("os.getcwd()",os.getcwd()))

结果:

发现sys.argv[0]有变化其余不变

 

接下来再看一个"__file__"

#coding=utf-8
import sys
import os
'''
分别以以相对路径运行脚本时:
'''
print('{0}:{1}'.format("__file__",__file__))

结果:

发现它的效果与sys.argv[0]一致

 

 

综上:

一般情况下:

sys.argv[0]同__file__

os.getcwd()同sys.path[0]

当想获取脚本的绝对路径时,可以用以下方法:

os.path.abspath(__file__)

os.path.abspath(sys.argv[0])

 


版权声明:本文为LLXLQY原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。