Windows Python解释器在Ctrl C上退出
对于我使用过的大多数 Python解释器,Ctrl C将导致解释器打印出“KeyboardInterrupt”并保持打开状态.但是,在最近在新计算机上安装时,Ctrl C导致解释器退出,这是不合需要的. >设置signal.SIGINT处理程序仍然退出. 如果我在下面的代码段中的暂停期间按Ctrl C,则解释器保持打开状态. import time try: time.sleep(100) except KeyboardInterrupt: pass 环境:Windows 10上的Python 3.4.3 在Windows 8及更高版本上运行3.6之前的Python版本的shell提示符处,Ctrl C处理已中断.对于input和raw_input,它也会被破坏,你将获得一个EOFError而不是KeyboardInterrupt.您可以通过安装和启用win_unicode_console或升级到3.6来解决此问题问题是Python从控制台读取的旧代码依赖于ReadFile,当Ctrl C中断读取时,将最后一个错误设置为ERROR_OPERATION_ABORTED(995).在Windows 8中,Microsoft完全重写了客户端进程如何与控制台通信.在这种情况下,他们打破了有关ReadFile行为的文档合同.没有错误,Python认为中止读取是0字节的成功读取.通常这表示文件结束(EOF),因此REPL只是退出,就像用户键入了Ctrl Z,Enter一样. ReadFile是来自任何File句柄的通用读取.还有一个专门的ReadConsole功能.这个仍然表现正常,这就是为什么win_unicode_console和3.6没有这个问题.他们调用ReadConsoleW来解决在控制台中使用全范围Unicode的单独问题,这恰好也解决了Ctrl C问题. 仅供参考,您在屏幕上看到的^ C不是由控制台(conhost.exe)或Python编写的.它实际上是由cmd.exe shell设置的CTRL_BREAK_EVENT处理程序打印的.如果从PowerShell运行Python,则不应该看到使用Ctrl Break打印的内容. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 如何为Git-Bash设置16种终端颜色?
- Windows系统DOS命令之多线程技术
- Microsoft Unit Testing Framework for C++
- 批处理文件 – 以编程方式更改和刷新图标(无需重新启动)
- windows-phone-8 – Windows Phone 8.1应用程序无法在模拟器
- 飞溅屏幕 – 通用窗口10个应用程序的Splash屏幕
- Windows 8应用程序是否运行符合标准的JavaScript,HTML5和CS
- Windows – Win32:如何将字符串转换为日期?
- windows – Win32:窗口在整个生命周期内都有相同的HDC吗?
- .net – 为什么我无法在2.0.0.0播放器框架中重用1.8.2.2 Pl
- windows平台xFsRedir程序更新(虚拟磁盘镜像存储
- windows-10 – Windows 10移动设备错误:DEP6200
- Windows10操作系统如何在局域网设置打印机共享
- Windows Server 2016-Win Ser 2016新增功能
- jboss7.x – 无法登录到windows上的jboss 7.1管理
- windows-phone-7 – 多长时间调用SpriteBatch.Be
- windows – procdump -t – 如何在进程终止时转储
- windows – PSExec如何以SYSTEM用户身份运行应用
- Microsoft Windows远程桌面协议中间人攻击漏洞(C
- 命令行 – 批处理脚本 – 更改桌面上文件夹的图标