退出失败的脚本运行(python)

时间:2009-07-24 17:22:48

标签: python exception exit

在成功完成任务后,我已经看到了几个关于退出脚本的问题,但有没有办法对失败的脚本执行相同的操作?我正在编写一个测试脚本,只检查相机是否正常工作。如果第一次测试失败,下面的测试很可能也会失败;因此,我希望第一次无法调用退出并向屏幕提供输出,让我知道存在错误。

我希望这是足够的信息;如果需要更多细节来帮助我,请告诉我。

4 个答案:

答案 0 :(得分:19)

您是否只是在寻找exit()功能?

import sys

if 1 < 0:
  print >> sys.stderr, "Something is seriously wrong."
  sys.exit(1)

exit()的(可选)参数是脚本返回shell的返回码。通常,不同于0的值表示错误。

答案 1 :(得分:4)

您可以使用sys.exit()退出。但是,如果任何较高的代码捕获SystemExit异常,则不会退出。

答案 2 :(得分:1)

您可以引发异常以识别错误情况。您的顶级代码可以捕获这些异常并适当地处理它们。您可以使用sys.exit退出。例如,在Python 2.x中:

import sys

class CameraInitializationError(StandardError):
    pass

def camera_test_1():
    pass

def camera_test_2():
    raise CameraInitializationError('Failed to initialize camera')

if __name__ == '__main__':
    try:
        camera_test_1()
        camera_test_2()
        print 'Camera successfully initialized'
    except CameraInitializationError, e:
        print >>sys.stderr, 'ERROR: %s' % e
        sys.exit(1)

答案 3 :(得分:0)

您想检查正在运行的c ++程序的返回代码,如果指示失败则退出。在下面的代码中,/ bin / false和/ bin / true分别是以错误和成功代码退出的程序。用你自己的程序替换它们。

import os
import sys

status = os.system('/bin/true')
if status != 0:
    # Failure occurred, exit.
    print 'true returned error'
    sys.exit(1)

status = os.system('/bin/false')
if status != 0:
    # Failure occurred, exit.
    print 'false returned error'
    sys.exit(1)

这假设您运行的程序在成功时退出,在失败时退出非零。