我见过几个关于在任务成功完成后退出脚本的问题,但是有没有办法对失败的脚本做同样的事情?我正在编写一个测试脚本,它只是检查相机是否正常工作。如果第一个测试失败,那么接下来的测试很可能也会失败;因此,我希望第一次失败时调用退出并向屏幕提供输出,让我知道有错误。
我希望这是足够的信息;让我知道是否需要更多详细信息来帮助我。
您只是在寻找exit()
功能吗?
import sys
if 1 < 0:
print >> sys.stderr, "Something is seriously wrong."
sys.exit(1)
的(可选)参数exit()
是脚本将返回到 shell 的返回码。通常,不同于 0 的值表示错误。
您可以使用sys.exit()
退出。但是,如果任何更高级别的代码捕获到SystemExit
异常,它就不会退出。
您可以引发异常以识别错误情况。您的顶级代码可以捕获这些异常并适当地处理它们。您可以使用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)
您想检查您正在运行的 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)
这假设您正在运行的程序在成功时以零退出,在失败时以非零退出。