您可以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)