1
A
回答
5
您可以使用sys.exit()
告诉程序异常退出(通常,1错误的情况下返回)。
你的Python脚本可能看起来是这样的:
import sys
def main():
# ...
if __name__ == '__main__':
try:
main()
except Exception as e:
print >> sys.stderr, e
sys.exit(1)
else:
sys.exit()
你可以在错误的情况下再次调用main()
,但该程序可能无法的状态下也可以正常工作了。 改为在新过程中启动程序可能会更安全。
所以你可以编写一个调用Python脚本的脚本,当它完成时获取它的返回值,并且如果返回值不是0(这是sys.exit()
默认使用的返回值),则重新启动它。 这可能是这个样子:
import subprocess
command = 'thescript'
args = ['arg1', 'arg2']
while True:
ret_code = subprocess.call([command] + args)
if ret_code == 0:
break
+0
非常pythonic :-) – 2009-07-27 12:11:13
0
最简单的方法是捕捉错误,关闭旧的并在捕捉时打开程序的新实例。
请注意,它不会总是工作(如果它停止工作,而不会引发错误)。
1
可以使用子(http://docs.python.org/library/subprocess.html),这将产生你的应用程序作为一个子进程,并跟踪它的执行创建包装。
相关问题
- 1. Python在运行Django时意外退出
- 2. 程序在退出后保持运行
- 3. Bluemix Python应用程序运行然后崩溃,然后再次运行
- 4. 通过表单运行* .exe应用程序,然后在应用程序退出时再次显示表单
- 5. 如何让应用程序在退出后继续运行?
- 6. 让程序再次运行在C中
- 7. Windows Mobile应用程序意外退出
- 8. python子进程退出意外退出代码-9
- 9. Win32线程意外退出
- 10. Python的意外退出在Mac
- 11. 服务不会启动,直到退出并再次运行应用程序 - Android
- 12. 如何在Python中退出程序if
- 13. 如何退出正在运行的python程序到python提示符?
- 14. c#如何记录意外程序退出
- 15. 接收到NaN输入后,C++程序再次要求输入,然后退出
- 16. 在AJAX请求后再次运行jCarouselLite
- 17. 运行python程序后没有输出
- 18. XQuartz意外退出
- 19. Xcode意外退出
- 20. lxde意外退出
- 21. MPMoviePlayerViewController意外退出
- 22. LaunchDaemon意外退出
- 23. 应用程序意外退出,但与xcode连接时运行平稳
- 24. Python意外退出,分段错误:11
- 25. 如何让我的程序在进入退出后退出
- 26. 退出Python程序
- 27. 如何让用户在C#中再次尝试或退出控制台程序?
- 28. 如何在不退出的情况下多次运行此程序?
- 29. JQuery $ .getJSON第一次运行,然后再也不会再运行
- 30. 在Snow Leopard上以32位模式运行时,“Python意外退出”
我只注意到我的答案包含不正确的数据:“通常,在出现错误时则返回0”应为“一般,1错误的情况下返回”。现在已经纠正了。 – 2009-07-28 12:09:31