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 – LogonUser – 来自系统服务的CreateProcessAsUs
- Vulkan Tutorial 07 Window surface
- 命令行 – 批处理脚本 – 更改桌面上文件夹的图标(Windows
- 如何在Windows中挂钩应用程序和进程启动?
- resolveLocalFileSystemURI错误代码5 windows phone 7 phon
- 树莓派teamviewer远程 windows远程桌面
- 2018-5-26 怎么在windows上远程连接linux服务器上的mysql
- 使用免费工具开发轻量级(无运行时)基于Windows的GUI应用程序
- 引用子项目的所有项目都必须安装NuGet软件包Microsoft.Bcl.
- win10生成UWP软件打包 安装UWP软件
- WiX获得文化预处理器变量
- winapi – Windows SDK 7.0的signtool中的signwi
- windows – 我可以将16位.exe程序转换为64位.exe
- windows远程桌面连接centos7桌面显示,安装xdrp
- azure – Microsoft Knowledge API – 在数据库中
- Windows Phone 8.1 cordova下拉列表无法正常工作
- windows-nginx-https-本地配置
- Windows – Win7 Virtualbox在尝试启动虚拟机时出
- npm ERR!注册表错误解析json – 尝试在Windows
- .net – 在调试中可视化列表(或打印到即时窗口)
