首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Python中捕获SIGINT?

如何在Python中捕获SIGINT?

提问于 2017-12-26 03:55:57
回答 2关注 0查看 543

我正在研究一个启动多个进程和数据库连接的python脚本。我偶尔想用Ctrl+ C信号杀死脚本,我想做一些清理工作。

在Perl中,我会这样做:

代码语言:txt
AI代码解释
复制
$SIG{'INT'} = 'exit_gracefully';
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
sub exit_gracefully {
代码语言:txt
AI代码解释
复制
    print "Caught ^C \n";
代码语言:txt
AI代码解释
复制
    exit (0);
代码语言:txt
AI代码解释
复制
}

我如何在Python中做类似的事情?

回答 2

以往V

发布于 2017-12-26 04:07:58

可以把它像一个异常(KeyboardInterrupt),像任何其他。创建一个新的文件,并从你的shell中运行下面的内容来看看我的意思:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
import time, sys
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
x = 1
代码语言:txt
AI代码解释
复制
while True:
代码语言:txt
AI代码解释
复制
    try:
代码语言:txt
AI代码解释
复制
        print x
代码语言:txt
AI代码解释
复制
        time.sleep(.3)
代码语言:txt
AI代码解释
复制
        x += 1
代码语言:txt
AI代码解释
复制
    except KeyboardInterrupt:
代码语言:txt
AI代码解释
复制
        print "Bye"
代码语言:txt
AI代码解释
复制
        sys.exit()

心愿

发布于 2017-12-26 04:07:47

注册你的处理程序signal.signal像这样:

代码语言:txt
AI代码解释
复制
#!/usr/bin/env python
代码语言:txt
AI代码解释
复制
import signal
代码语言:txt
AI代码解释
复制
import sys
代码语言:txt
AI代码解释
复制
def signal_handler(signal, frame):
代码语言:txt
AI代码解释
复制
        print('You pressed Ctrl+C!')
代码语言:txt
AI代码解释
复制
        sys.exit(0)
代码语言:txt
AI代码解释
复制
signal.signal(signal.SIGINT, signal_handler)
代码语言:txt
AI代码解释
复制
print('Press Ctrl+C')
代码语言:txt
AI代码解释
复制
signal.pause()
和开发者交流更多问题细节吧,去 写回答
相关文章
python中的异常捕获
无论是编程新手还是老手,都会遇到过程序报错,终止执行的情况,对于python的报错信息,可以分为以下两大类
生信修炼手册
2020/05/28
1.9K0
python – 异常捕获
直接上示例: 大概的意思就是当try下方的代码出现异常的时候就自动执行except下方的代码
Blank.
2023/04/12
1.3K0
python异常捕获
下面写一个程序,这个程序接受用户的输入一个的正整数,然后与预设的一个正整数数比较,给出比较结果。 其中用户输入和预设的正整数范围是[0,10). answer = 5guess = int (input ('请输入一个[0,10)范围的正整数:'))if (guess == answer): print ('恭喜!猜对了!')else: print ('很遗憾!猜错了!') int()将输入的字符串格式的数字更改为数字格式的数字。 下面两个执行示例,其中第一次猜对了,第二次猜错了: $ py
mwangblog
2018/07/04
1.6K0
python - 异常捕获
在执行python程序时,有时候会报异常,出错的原因可能是自己错写或少写,还有可能是执行程序时由于疏忽或者考虑不全造成了错误,Traceback可以追踪错误点,进行分析改正;这时我们可以对异常进行捕获处理,防止程序终止。
HammerZe
2022/03/25
1.9K0
python - 异常捕获
Flask中异常捕获
HTTP 异常主动抛出 abort 方法 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。 参数: code – HTTP的错误状态码 # abort(404) abort(500)   抛出状态码的话,只能抛出 HTTP 协议的错误状态码  捕获错误 errorhandler 装饰器 注册一个错误处理程序,当程序抛出指定错误状态码的时候,就会调用该装饰器所装饰的方法 参数: code_or_ex
汪凡
2019/03/01
1.7K0
如何在 Python 中清屏
在很多时候,如果我们在控制台中使用 Python, 随着时间的推移,可能会发现屏幕越来越乱。
HoneyMoose
2021/03/08
3K0
如何在 Python 中清屏
如何在 Python 中清屏
在很多时候,如果我们在控制台中使用 Python, 随着时间的推移,可能会发现屏幕越来越乱。
HoneyMoose
2021/03/11
4K0
如何在 Python 中清屏
Python Opencv捕获视频
这一句表示调用计算机内置摄像头来获取视频,如果传入参数为1时,表示调用计算机外置摄像头,比如usb连接的摄像头等。VideoCapture对象也可以传入视频文件地址。
云深无际
2021/03/12
1.3K0
Python Opencv捕获视频
Python 怎么捕获警告?(注意:不是捕获异常)
你是不是经常在使用一些系统库或者第三方模块的时候,会出现一些既不是异常也不是错误的警告信息?
青南
2021/03/22
3K0
Python 怎么捕获警告?(注意:不是捕获异常)
Python 怎么捕获警告?(注意:不是捕获异常)
在前面我们介绍了如何在python中使用try except语句来测试代码。try except语句其实只能捕获异常或者错误,但无法捕获警告。在本文中,我向大家介绍几种捕获警告的方法。
自学气象人
2022/11/14
1.8K0
Python 怎么捕获警告?(注意:不是捕获异常)
PHP正则中的捕获组与非捕获组
枕边书
2018/01/04
2K0
PHP正则中的捕获组与非捕获组
python try except 捕获
try: 2/0 except Exception, e: # error occurred, log 'e', etc print e C:\Python27\python.exe C:/Users/TLCB/PycharmProjects/untitled/core/a9.py integer division or modulo by zero try: 2/'a' except Exception, e: # error occurred, log 'e', etc print
py3study
2020/01/10
6780
如何在Fortran中调用Python
Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗?数据科学领域可能会利用HTTP API(比如Flask)封装机器学习方法,但是HTTP在紧密耦合的系统(比如气候模式)中效率太低。因此,可以选择直接从Fortran中调用Python,直接通过RAM传递气候模式的状态,而不是通过高延迟的通信层,比如HTTP。
bugsuse
2020/04/21
6K0
python 捕获用户输入pexpect
image.png image.png
用户5760343
2019/07/31
1.3K0
python 捕获用户输入pexpect
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
29.2K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
处理Python未捕获异常
和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据. 下面代码可以实现python unchecked exception回调,并输出日志信息.
技术小黑屋
2018/09/04
1.7K0
Python捕获所有异常
老生常谈了,但是在Pyflake检查出E722错误时有时候又犯老毛病。人年纪大了越来越有老年痴呆倾向 -_- …..
happy123.me
2019/12/30
3.6K0
捕捉和处理SIGINT信号的方法
在编写C++程序时,可能会遇到需要捕捉和处理信号的情况。其中,SIGINT信号是用户向程序发送的中断信号,使用Ctrl+C即可发送该信号。本文将从以下几个方面对如何捕捉和处理SIGINT信号进行详细阐述。
很酷的站长
2023/08/25
7120
捕捉和处理SIGINT信号的方法
【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )
使用 try-except 语句 , 不指定异常类型 , 默认就可以捕获所有类型的异常 ;
韩曙亮
2023/10/11
2.2K0
【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )
点击加载更多

相似问题

如何从Python函数调用中捕获stdout输出?

21.1K

如何避免在Python 2.4中意外捕获KeyboardInterrupt和SystemExit?

11.1K

录制中如设置gif动图?

0244

如何在python中获取TransactionManagementError报错信息?

1379

如何在opencloudos 中安装python?

0501
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
腾讯云TDP | KOL擅长5个领域
擅长3个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文