草庐IT

keyboardinterrupt

全部标签

python - 使用 KeyboardInterrupt 异常捕获 SIGINT 在终端中有效,而不是在脚本中有效

我试图在Python2.7程序中捕获SIGINT(或键盘中断)。这是我的Python测试脚本test的样子:#!/usr/bin/pythonimporttimetry:time.sleep(100)exceptKeyboardInterrupt:passexcept:print"error"接下来我有一个shell脚本test.sh:./test&pid=$!sleep1kill-s2$pid当我使用bash、sh或其他东西运行脚本时bashtest.sh,Python进程test保持运行并且不能被SIGINT杀死。而当我复制test.sh命令并将其粘贴到(bash)终端时,Pyth

python - 避免在 Python 2.4 中意外捕获 KeyboardInterrupt 和 SystemExit

在Python脚本中,由于代码中某处的except子句,在很多情况下键盘中断(Ctrl-C)无法终止进程:try:foo()except:bar()Python2.5或更高版本中的标准解决方案是捕获Exception而不是使用裸except子句:try:foo()exceptException:bar()这是因为,从Python2.5开始,KeyboardInterrupt和SystemExit继承自BaseException,而不是Exception。但是,某些安装仍在运行Python2.4。在Python2.5之前的版本中如何处理这个问题?(我将自己回答这个问题,但把它放在这里以便

python - 在不关闭 Python 中的 Selenium Webdriver session 的情况下捕获 `KeyboardInterrupt`

一个Python程序通过SeleniumWebDriver驱动Firefox。代码嵌入在try/exceptblock中,如下所示:session=selenium.webdriver.Firefox(firefox_profile)try:#dostuffexcept(Exception,KeyboardInterrupt)asexception:logging.info("Caughtexception.")traceback.print_exc(file=sys.stdout)如果程序因错误而中止,WebDriversession不会关闭,因此Firefox窗口保持打开状态。但是

python - Python中如何防止一段代码被KeyboardInterrupt打断?

在dump操作保存数据时按ctrl+c,中断会导致文件损坏(即仅部分写入,所以它不能再次加载。有没有办法让dump或一般的任何代码块不间断?我当前的解决方法如下所示:try:file=open(path,'w')dump(obj,file)file.close()exceptKeyboardInterrupt:file.close()file.open(path,'w')dump(obj,file)file.close()raise如果中断了重新开始操作似乎很傻,那么中断怎么能延迟呢? 最佳答案 以下是为SIGINT附加信号处理程序

python - 在程序关闭期间在 Python 中捕获 KeyboardInterrupt

我正在用Python编写一个命令行实用程序,因为它是生产代码,应该能够干净地关闭而不会将一堆东西(错误代码、堆栈跟踪等)转储到屏幕上。这意味着我需要捕捉键盘中断。我尝试过使用trycatchblock,例如:if__name__=='__main__':try:main()exceptKeyboardInterrupt:print'Interrupted'sys.exit(0)并捕捉信号本身(如thispost):importsignalimportsysdefsigint_handler(signal,frame):print'Interrupted'sys.exit(0)signa