Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ctrl-C用于退出Powershell中的Python现在不起作用_Python_Powershell_Exit - Fatal编程技术网

Ctrl-C用于退出Powershell中的Python现在不起作用

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

在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环境中工作良好,可以退出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行为,以防止调用处理程序函数:

  • SetConsoleMode功能可以禁用控制台输入缓冲区的ENABLE_PROCESSED_INPUT输入模式,因此CTRL+C被报告为键盘输入,而不是信号
  • 当使用参数的NULL和TRUE值调用SetConsoleCtrlHandler时,调用过程将忽略CTRL+C信号。通过使用NULL和FALSE值调用SetConsoleCtrlHandler,可以恢复正常的CTRL+C处理。忽略或不忽略CTRL+C信号的属性由子进程继承,但任何进程都可以启用或禁用该属性,而不会影响现有进程 因此,
    CTRL+C
    似乎是一个SIGINT,它的操作可以由正在运行的程序修改。Windows上的Python编码方式似乎是将
    CTRL+C
    处理为键盘输入,而不是我们期望的SIGINT。幸运的是,我的键盘上有
    CTRL+BREAK
    键,每次都能用

    对于键盘上没有
    BREAK
    的用户,可以使用Windows屏幕虚拟键盘

  • win键+r
    打开运行应用程序
  • 键入
    osk
    ,然后按ok
  • 在虚拟键盘上,按ctrl+ScrLk,这将终止程序

  • 如果
    ctrl+ScrLk
    在虚拟键盘上不起作用,您还可以尝试其他一些方法。

    这就像魔术一样有效

    如果您的笔记本电脑带有Fn键,请轻按:

    Ctrl + Fn + S
    
    资料来源:

    谢谢你的回答。但这与代码停止无关。这只是关于退出python。当我习惯于按Ctrl-C时,python是正常退出的,没有任何提示