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. 程序在退出後保持運行
- 4. 再次運行程序
- 5. Bluemix Python應用程序運行然後崩潰,然後再次運行
- 6. 退出MongoDB並不清楚如何讓它再次運行
- 7. 通過表單運行* .exe應用程序,然後在應用程序退出時再次顯示錶單
- 8. Python運行程序一次,但不會再運行
- 9. 如何讓應用程序在退出後繼續運行?
- 10. 讓程序再次運行在C中
- 11. 如何退出一個運行線程的Python程序?
- 12. 卸載程序在安裝程序退出後仍在運行
- 13. selenium WebDriverException驅動程序意外退出
- 14. Windows Mobile應用程序意外退出
- 15. python子進程退出意外退出代碼-9
- 16. 如何在後臺運行Python程序?
- 17. Win32線程意外退出
- 18. FastCGI進程意外退出
- 19. Python的意外退出在Mac
- 20. 服務不會啓動,直到退出並再次運行應用程序 - Android
- 21. Java程序在NetBeans中完美工作,但嘗試運行時意外退出
- 22. 在python程序中意外的輸出
- 23. 如何在Python中退出程序if
- 24. 從Python模塊運行代碼,修改模塊,然後再次運行而不退出中間件
- 25. 如何退出正在運行的python程序到python提示符?
- 26. C#程序在運行其他進程後退出
- 27. 再按一次退出
- 28. 如何在退出並再次運行應用程序時啓動特殊活動?
- 29. C#確定何時運行或退出外部應用程序
- 30. 接收到NaN輸入後,C++程序再次要求輸入,然後退出
我只注意到我的答案包含不正確的數據:「通常,在出現錯誤時則返回0」應爲「一般,1錯誤的情況下返回」。現在已經糾正了。 – 2009-07-28 12:09:31