美文网首页
python 中exit,sys.exit,os._exit用法

python 中exit,sys.exit,os._exit用法

作者: tafanfly | 来源:发表于2019-08-05 16:27 被阅读0次

    exit

    exit() 可以退出某个程序,余下语句不执行,而其中的数字参数则用来表示程序是否是碰到错误而中断。

    • exit(1) 表示程序错误退出
    • exit(0) 表示程序正常退出

    test.py:

    #!/usr/bin/env python
    # coding=utf-8
    
    
    def test():
        print 'start test'
        #exit(0)
        print 'end test'
    
    
    def test1():
        print 'start test2'
        try:
            err
        except:
            print 'Error'
            exit(1)
        print 'end test2'
    
    
    if __name__ == "__main__":
        test()
        test1()
    

    test.sh:

    #!/bin/bash
    
    
    python test.py
    echo 'The exit status of above command is '$?
    echo 'Finally'
    

    test.py脚本中exit(0)没有注释时, 运行test.sh脚本, 可以知道一) exit(0)退出了程序,后面的语句不执行;二)python脚本是正常退出,退出状态为0。

    $ sh test.sh 
    start test
    The exit status of above command is 0
    Finally
    

    test.py脚本中exit(0)有注释时, 运行test.sh脚本, 可以知道一) exit(1)退出了程序,后面的语句不执行;二)python脚本是异常退出,退出状态为1。

     $ sh test.sh 
    start test
    end test
    start test2
    Error
    The exit status of above command is 1
    Finally
    

    注意: 无论是exit(0) 还是 exit(1), 这个都是由人为判断去如何使用才恰当的。0的话只是告诉你正常退出, 1是告诉你发生了未知错误才退出的。

    sys.exit

    sys.exit() 可以退出某个程序,余下语句不执行,而其中的数字参数则用来表示程序是否是碰到错误而中断。功能和exit()基本类似, 都能抛出异常:
    sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么余下代码还是会执行。

    #!/usr/bin/env python
    # coding=utf-8
    
    import sys
    
    
    def test():
        print 'start test'
        try:
            sys.exit(0)
        except SystemExit:
            print 'continue'
        finally:
            print 'end test'
    # $ python test.py 
    start test
    continue
    end test
    

    注意:0为正常退出,其他数值(1-127)为不正常。一般用于在主线程中退出。

    os._exit

    直接将python程序终止,之后的所有代码都不会继续执行, 且不会有异常抛出。

    #!/usr/bin/env python
    # coding=utf-8
    
    import os
    import sys
    
    
    def test():
        print 'start test'
        try:
            os._exit(0)
        except Exception:
            print 'continue'
        finally:
            print 'end test'
    
    # $ python test.py 
    start test
    

    注意:0为正常退出,其他数值(1-127)为不正常。一般os._exit() 用于在线程中退出。

    总结

    • exit()一般在交互式shell中退出时使用
    • sys.exit()的退出比较优雅,调用后会引发SystemExit异常,可以捕获此异常做清理工作。一般用于在主线程中退出。
    • os._exit()直接将python解释器退出,余下的语句不会执行, 不会抛出异常。一般用于在线程中退出 。

    相关文章

      网友评论

          本文标题:python 中exit,sys.exit,os._exit用法

          本文链接:https://www.haomeiwen.com/subject/arcrdctx.html