Ctrl-C用于退出Powershell中的Python现在不起作用
在Powershell/命令提示符下使用Ctrl-C时,Python无法退出,而是发出一个“KeyboardInterrupt”字符串 最近我重新安装了Windows10。在重新安装Ctrl-C之前,退出python(3.5/2.7)很好,没有输出 有人知道为什么会这样吗?是否只是一个简单的设置Ctrl-C用于退出Powershell中的Python现在不起作用,python,powershell,exit,Python,Powershell,Exit,在Powershell/命令提示符下使用Ctrl-C时,Python无法退出,而是发出一个“KeyboardInterrupt”字符串 最近我重新安装了Windows10。在重新安装Ctrl-C之前,退出python(3.5/2.7)很好,没有输出 有人知道为什么会这样吗?是否只是一个简单的设置 我能想到的唯一区别是我现在使用的是python 3.6。Ctrl-D在Windows上的Ubuntu上的Bash中工作,Ctrl-C在激活的anaconda python2环境中工作良好,可以退出pyt
我能想到的唯一区别是我现在使用的是python 3.6。Ctrl-D在Windows上的Ubuntu上的Bash中工作,Ctrl-C在激活的anaconda python2环境中工作良好,可以退出python 当您按下Control C时,会引发
键盘中断
异常。如果它没有停止代码,最好的办法是在代码中添加一个try
语句,该语句捕获KeyboardInterrupt
try:
....
except KeyboardInterrupt:
exit()
我脑子里想不出这个密码,如果出了什么问题,我很抱歉
编辑:
Ctrl Break
或在某些键盘上Ctrl Pause
立即停止python代码 这是最近出现在Windows10InsiderBuild15002中的一个bug
解决方法是将映射的键从Ctrl C更改为类似Ctrl K的键
如果您不熟悉如何执行此操作,您可以查阅或访问stty-a
您可以在每个bash会话上运行此命令,该会话将您的Terminate映射到Ctrl+K
stty intr \^k
作为临时解决方案,您可以在Bashrc中包含它,以便在每个新会话上执行它
Github上已经报告了这个bug#1569在Windows-7上,在Spyder内部运行numpy,用于Python 3上,点击键盘上角的Esc按钮似乎对我有效+ 它打破了无限…:在交互式脚本中的错误语法上,您可以键入
CTRL + Z,
然后按ENTER键退出powershell中的python
当我过去按Ctrl-C时,python正常退出,没有任何输出
我真的不记得什么时候可以用Ctrl+C
退出python了。在我的记忆中,Ctrl+C
总是给我KeyboardInterrupt
我也找不到解释为什么
Ctrl+C
不能退出shell中的python的答案。仅供参考,Ctrl+D
和Ctrl+\
可以出于不同的原因退出python。请看这里的@Gilles的答案
但是我认为如何处理
Ctrl+C
仅仅是程序的决定。是的,我认为这完全取决于程序如何处理它。见下面我写的例子
测试c
#包括
#包括
#包括
静态无效ctrlC_处理器(int sig){
if(sig==SIGINT){
printf(“(:键盘中断:)\n”);
printf(“>>>”);
信号(SIGINT、ctrlC_处理器);
}
}
静态void欢迎(){
printf(“Python 2.7.15rc1(默认值,2018年11月12日,14:31:15)\n”);
printf(linux2上的[GCC 7.3.0]);
printf(“键入\“帮助\”、“版权\”、“信用证\”或\“许可证\”以了解更多信息。\n”);
printf(“>>>”);
fflush(stdout);
}
int main(){
欢迎();
信号(SIGINT、ctrlC_处理器);
对于(;;){
暂停();
}
返回0;
}
用gcc test.c编译它,并执行它。尝试按下Ctrl+C
,您至少可以看到,当您输入Ctrl+C
时,它模仿了python程序的行为(输出)
所以,在我看来,这没什么特别的,只是一个人/程序员/作者关于如何处理它的决定。在我的例子中,我发现右ctrl+c在anaconda3 powershell中起了作用-因此无需重新映射-我使用的是Windows 10 我在Windows 10 Pro Build 18363和Python 3.8.1中遇到了这个问题。我正在运行一些python脚本,无法使用
CTRL+C
停止一些脚本,但CTRL+BREAK
每次都有效。他说:
CTRL+C和CTRL+BREAK组合键由控制台进程进行特殊处理。默认情况下,当控制台窗口具有键盘焦点时,CTRL+C或CTRL+BREAK将被视为信号(SIGINT或SIGBREK),而不是键盘输入
CTRL+BREAK始终被视为一个信号,但应用程序可以通过两种方式更改默认的CTRL+C行为,以防止调用处理程序函数:
CTRL+C
似乎是一个SIGINT,它的操作可以由正在运行的程序修改。Windows上的Python编码方式似乎是将CTRL+C
处理为键盘输入,而不是我们期望的SIGINT。幸运的是,我的键盘上有CTRL+BREAK
键,每次都能用
对于键盘上没有BREAK
的用户,可以使用Windows屏幕虚拟键盘
win键+r
打开运行应用程序osk
,然后按ok如果
ctrl+ScrLk
在虚拟键盘上不起作用,您还可以尝试其他一些方法。这就像魔术一样有效
如果您的笔记本电脑带有Fn键,请轻按:
Ctrl + Fn + S
资料来源:
谢谢你的回答。但这与代码停止无关。这只是关于退出python。当我习惯于按Ctrl-C时,python是正常退出的,没有任何提示