在成功完成任务后,我已经看到了几个关于退出脚本的问题,但有没有办法对失败的脚本执行相同的操作?我正在编写一个测试脚本,只检查相机是否正常工作。如果第一次测试失败,下面的测试很可能也会失败;因此,我希望第一次无法调用退出并向屏幕提供输出,让我知道存在错误。
我希望这是足够的信息;如果需要更多细节来帮助我,请告诉我。
答案 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)
这假设您运行的程序在成功时退出,在失败时退出非零。