如何在Python中意外退出后重新运行程序?

1 投票
3 回答
1844 浏览
提问于 2025-04-15 13:11

我正在用Python写一个IRC机器人,因为它还在测试阶段,所以可能会出现一些意想不到的错误,然后程序就会退出。

我可以用什么方法让这个程序重新运行呢?

3 个回答

0

最简单的方法就是在程序出错的时候,捕捉到这些错误,然后关闭旧的程序,再打开一个新的实例。

不过要注意,这种方法并不总是有效,有时候程序会直接停止工作,但并不会报错。

1

你可以使用subprocess这个模块来创建一个“包装器”。这个模块会把你的应用程序当作一个子进程来运行,并且可以跟踪它的执行情况。

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

撰写回答