如果您正在从目录和驱动器运行与脚本存在位置不同的冻结python脚本(使用py2exe冻结),那么确定路径的最佳方法是什么执行脚本?如何获取正在执行的冻结脚本的路径
几个解决方案我已经试过
inspect.getfile(inspect.currentframe())
问题:不返回完整路径。它只返回脚本名称。
os.path.abspath(__file__)
问题:不能在Windows
os.path.dirname(sys.argv[0])
问题的工作:返回空字符串。
os.path.abspath(inspect.getsourcefile(way3))
不会,如果驱动器是从PWD不同的工作
os.path.dirname(os.path.realpath(sys.argv[0]))
如果驱动器是从PWD
这里不同都不行是一个很小的不工作示例
D:\>path
PATH=c:\Python27\;c:\Users\abhibhat\Desktop\ToBeRemoved\spam\dist\;c:\gnuwin32\bin
D:\>cat c:\Users\abhibhat\Desktop\ToBeRemoved\spam\eggs.py
import os, inspect, sys
def way1():
return os.path.dirname(sys.argv[0])
def way2():
return inspect.getfile(inspect.currentframe())
def way3():
return os.path.dirname(os.path.realpath(sys.argv[0]))
def way4():
try:
return os.path.abspath(__file__)
except NameError:
return "Not Found"
def way5():
return os.path.abspath(inspect.getsourcefile(way3))
if __name__ == '__main__':
print "Path to this script is",way1()
print "Path to this script is",way2()
print "Path to this script is",way3()
print "Path to this script is",way4()
print "Path to this script is",way5()
D:\>eggs
Path to this script is
Path to this script is eggs.py
Path to this script is D:\
Path to this script is Not Found
相关问题:如果脚本驻留在
- How to know the path of the running script in Python?
- How do I get the path and name of the file that is currently executing?
- python, path of script [closed]
注意
@ Fenikso的解决方案将工作同样的车程,那里正在执行,但是当它是一个不同的驱动器上,它不会工作
是的,这也适用于py2exe。 – 2012-04-24 08:50:54
@Fenikso:这很好。在发布这个问题之前,我已经看到很少提及SO中的同一个问题,但是没有一个答案本身是不正确的。 – Abhijit 2012-04-24 09:01:15