python 捕捉 ctrl+c 异常方法, os._exit() 和 sys.exit() 的用法和区别
这里写自定义目录标题
- python 捕捉 ctrl+c 异常方法
- 第一种方法
- 第二种方法使用 signal 模块
- python 中 os._exit() 和 sys.exit() 的用法和区别
- 概述
- 区别
- exit(0)和 exit(1)
python 捕捉 ctrl+c 异常方法
第一种方法
import systry:# 运行
except KeyboardInterrupt:# 结束sys.exit()
第二种方法使用 signal 模块
import signaldef exit(signum, frame):print('You choose to stop me.')exit()signal.signal(signal.SIGINT, exit)
signal.signal(signal.SIGTERM, exit)while 1:pass
几个常用信号:
- SIGINT: 终止进程 中断进程 (control+c)
- SIGTERM: 终止进程 软件终止信号
- SIGKILL: 终止进程 杀死进程
- SIGALRM: 闹钟信号
python 中 os._exit() 和 sys.exit() 的用法和区别
概述
python 的程序有两中退出方式: os._exit()
, sys.exit()
。本文介绍这两种方式的区别和选择。
os._exit()
会直接将 python 程序终止, 之后的所有代码都不会继续执行。
sys.exit()
会引发一个异常: SystemExit
, 如果这个异常没有被捕获, 那么 python 解释器将会退出。如果有捕获此异常的代码, 那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。0
为正常退出, 其他数值 (1-127)
为不正常, 可抛异常事件供捕获。
举例说明
# -*- coding:utf-8 -*-
import os
import systry:sys.exit(0)
except:print(1)
finally:print(2)
结果
1
2
try:os._exit(0)
except:print(3)
finally:print(4)
结果, 无输出。
区别
综上, sys.exit()
的退出比较优雅, 调用后会引发 SystemExit
异常, 可以捕获此异常做清理工作。os._exit()
直接将 python 解释器退出, 余下的语句不会执行。
一般情况下使用 sys.exit()
即可, 一般在 fork 出来的子进程中使用 os._exit()
一般来说 os._exit()
用于在线程中退出, sys.exit()
用于在主线程中退出。
exit()
跟 C 语言等其他语言的 exit()
应该是一样的。
os._exit()
调用 C 语言的 _exit()
函数。
builtin.exit
是一个 Quitter
对象, 这个对象的 call 方法会抛出一个 SystemExit
异常。
exit(0)和 exit(1)
exit(0)
: 无错误退出。exit(1)
: 有错误退出。
退出代码是告诉解释器的(或操作系统)。
python 捕捉 ctrl+c 异常方法, os._exit() 和 sys.exit() 的用法和区别相关推荐
- python exit 0_python中 os._exit() 和 sys.exit(), exit(0)的用法和区别
os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit().本文介绍这两种方 ...
- python中quit函数用法_关于 Python 中的退出命令:sys.exit(n), os._exit(n), quit(), exit()...
sys.exit(n) 标准的退出函数,会抛出一个 SystemExit 异常,可以在捕获异常处执行其他工作,比如清理资源占用 如果 n 为 0,则表示成功; 非 0 则会产生非正常终止 另外,除了可 ...
- Python跨平台文件夹分割方法os.sep
我们在寻找路径或者进行一些什么操作的时候,可能经常要对文件夹进行分割操作.但是在在Windows上,文件的路径分隔符是'',在Linux上是'/',这会对我们的跨平台Python程序带来很多困扰.不过 ...
- python 类方法 静态方法_python中类方法、类实例方法、静态方法的使用与区别
注:使用的是Python2.7. 一.实例方法 实例方法就是类的实例能够使用的方法.如下: class Foo: def __init__(self, name): self.name = name ...
- windows popen 获取不到输出_彻底明白os.system、os.popen、subprocess.popen的用法和区别...
Hello,大家好,沉寂许久,我又来了,这次给大家分享的就是上述三个方法的使用范围和区别,不熟悉的可以在这个地方画一个圆满的句号了. os.system 首先来看这个函数的文档说明 是说是在一个子sh ...
- Python os._exit() sys.exit() exit()区别
Python退出程序的方式有两种:os._exit(), sys.exit() 1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行. 2)sys.exit() 引发一个 S ...
- python sys.exit_Python程序退出方式(sys.exit() os._exit() os.kill() os.popen(...))
对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下. 参考: Pytho ...
- python 如何中断程序、停止程序、退出程序?sys.exit()、os._exit()、os.kill()
1. sys.exit() 执行该语句会直接退出程序,这也是经常使用的方法,也不需要考虑平台等因素的影响,一般是退出Python程序的首选方法. 该方法中包含一个参数status,默认为0,表示正常退 ...
- Python程序退出方式(sys.exit() os._exit() os.kill() os.popen(...))
对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下. 参考: Pytho ...
最新文章
- 重庆商务学校有计算机专业吗,重庆对外经贸学院计算机科学与技术专业
- 餐饮供应链公司“鲜沐农场”获千万级Pre-A轮融资,未来要打造一站式采购平台...
- Strut2的属性驱动,模型驱动的理解
- Linux库概念及相关编程(动态库、静态库、环境变量)
- linux怎样扩容目录,Linux系统下对目录扩容的方法介绍
- Mybatis(13)动态sql语句if/where/foreach
- Java 泛型(generics)
- LeetCode 58 Spiral Matrix II
- android 继承现有控件,Android继承现有控件拓展实现自定义控件textView
- codeforces 1220E
- 美团败诉,赔偿饿了么 100 万元;华为 Mate X2 首发秒没;库克获 8 亿年终奖 | 极客头条...
- Java基础知识整理之static修饰属性
- 2021-5-record everthing
- HDLBits练习——Exams/ece241 2013 q7
- 【数字化常识】浅谈互联网企业的利器——“网络效应”
- ~ 关于中医给的建议~ 好好调理身体~
- 理财项目中宏涌晟五个投资理财基础知识
- Python黑科技:20行Python代码打造一个微信群聊助手
- Android全面屏导航栏高度,Android10全面屏开启底部手势横条,弹窗留白问题
- python监控linux运行程序_python linux监控程序