Python中退出程序的方法
Python程序有两种退出方式: os._exit() 和 sys.exit()。
os._exit() 会直接将python程序终止,之后的所有代码都不会执行。
sys.exit() 会抛出一个异常: SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获该异常的代码,那么这些
代码还是会执行。
例如
import os try:os._exit(0) except:print('Programisdead.')
这个print是不会打印的,因为没有异常被捕获。
import sys try:sys.exit(0) except:print('Programisdead.') finally:print('clean-up')
这里两个print都可以打印,因为sys.exit()抛出了异常.
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。
os._exit(),sys.exit(),exit(),quit()都能够退出当前执行脚本,差别在于os._exit()直接退出,sys.exit(),exit(),quit()始终会抛出一个SystemExit异常。如果不捕获异常,看起来的效果和 os._exit() 一样,不会有任何意外的信息,但也可以捕获这些异常来做一些清理的工作
import os,sys,time
def test_exit():
try:
for i in range(10):
time.sleep(0.5)
print(i)
fun(i)
print 'eeeee'
except:
print(sys.exc_info()[0])
print(sys.exc_info())
print 'clean'
def fun(item):
if item>2:
sys.exit(1) #可执行clean
#exit(2) #可执行clean
#quit(3) #可执行clean
#os._exit(5) #不执行clean
if __name__=='__main__':
test_exit()
注意,虽然能捕获SystemExit异常,执行clean,但是整个脚本的退出码还是0.
浙公网安备 33010602011771号