微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取执行冻结脚本的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实际运行的目录。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐