12

我见过几个关于在任务成功完成后退出脚本的问题,但是有没有办法对失败的脚本做同样的事情?我正在编写一个测试脚本,它只是检查相机是否正常工作。如果第一个测试失败,那么接下来的测试很可能也会失败;因此,我希望第一次失败时调用退出并向屏幕提供输出,让我知道有错误。

我希望这是足够的信息;让我知道是否需要更多详细信息来帮助我。

4

4 回答 4

25

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

import sys

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

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

于 2009-07-24T17:25:19.797 回答
5

您可以使用sys.exit()退出。但是,如果任何更高级别的代码捕获到SystemExit异常,它就不会退出。

于 2009-07-24T17:26:44.800 回答
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)
于 2009-07-24T17:36:29.837 回答
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)

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

于 2009-07-24T23:10:33.593 回答