如何获取执行冻结脚本的path

如果你正在从一个目录运行一个冻结的python脚本(使用py2exe冻结),并且驱动与脚本的位置不同,那么确定执行脚本path的最好方法是什么?

我尝试了几个解决scheme

inspect.getfile(inspect.currentframe())

问题:不返回完整path。 它只返回脚本名称

os.path.abspath( __file__ )

问题:在Windows上不起作用

有没有办法允许多个程序在Windows上订阅相同的多播组?

Windows API来触发时间同步

如何从Windowsregistry中删除JRE条目?

如何在Windows中模拟SHIFT + END组合键

如何从剪贴板清除指定的格式数据?

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

问题:返回空string。

os.path.abspath(inspect.getsourcefile(way3))

如果驱动器与pwd不同,则不起作用

os.path.dirname(os.path.realpath(sys.argv[0]))

如果驱动器与pwd不同,则不起作用

这是一个微不足道的例子

D:>path PATH=c:Python27;c:UsersabhibhatDesktopToBeRemovedspamdist;c:gnuwin32bin D:>cat c:UsersabhibhatDesktopToBeRemovedspameggs.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

相关问题:

如何知道Python中运行脚本的path?

我如何获得当前正在执行的文件的path和名称

python,脚本的path[closures]

注意

@ Fenikso的解决scheme将工作,如果脚本驻留在您正在执行相同的驱动器,但是当它在不同的驱动器上,它将无法正常工作

Windows上的GStreameraudiostream

如何杀死一个窗口?

在C ++中获得ring 0模式(Windows)

如何检测是否安装了MysqL

无法使用for循环从windows批处理脚本中写入html

另一种方法,即使使用PATH从另一个驱动器运行cxFreeze:

import sys if hasattr(sys,'frozen'): print(sys.executable) else: print(sys.argv[0])

从Python:

H:PythonExamplescxfreezepwdme.py

从命令行:

D:>h:PythonExamplescxfreezedistpwdme.exe h:PythonExamplescxfreezedistpwdme.exe

使用PATH:

D:>pwdme.exe h:PythonExamplescxfreezedistpwdme.exe

恕我直言,根据绝对路径行事的代码不是一个好的解决方案。 相对路径解决方案可能会更好。 使用dirname知道相对目录和os.sep的跨平台兼容性。

if hasattr(sys,"frozen"): main_dir = os.path.dirname(sys.executable) full_real_path = os.path.realpath(sys.executable) else: script_dir = os.path.dirname(__file__) main_dir = os.path.dirname(os.path.realpath(sys.argv[0])) full_real_path = os.path.realpath(sys.argv[0])

冻结属性是python标准。

请看看Esky: http ://pypi.python.org/pypi/esky

尝试这个:

WD = os.path.dirname(os.path.realpath(sys.argv[0]))

这就是我使用cx_Freeze获取.exe实际运行的目录。

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...