如何在Python中意外退出后再次运行程序?

Jus*_*rMe 1 python irc

我正在用Python写一个IRC机器人,由于它的alpha性质,它可能会出现意外错误并退出.

我可以用什么技术让程序再次运行?

Bas*_*ard 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()
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)