为什么不像以下代码那样捕获CTRL-C?
MAXVAL = 10000
STEP_INTERVAL = 10
for i in range(1, MAXVAL, STEP_INTERVAL):
try:
print str(i)
except KeyboardInterrupt:
break
print "done"
我的期望是 - 如果在程序运行时按下CTRL-C,KeyboardInterrupt
应该离开循环。它没有。
对我做错的任何帮助?
答案 0 :(得分:17)
听起来这个程序是在时间控制-c被击中的情况下完成的,但是你的操作系统还没有完成显示所有的输出。
答案 1 :(得分:14)
代码流程如下:
for
从列表中抓取新对象(由range
生成)并将i
设置为try
print
1
如果你在第1部分中点击了CTRL-C,它就在try
/ except
之外,所以它不会捕获异常。
请改为尝试:
MaxVal = 10000
StepInterval = 10
try:
for i in range(1, MaxVal, StepInterval):
print i
except KeyboardInterrupt:
pass
print "done"
答案 2 :(得分:2)
我遇到了同样的问题,我刚刚发现了解决方案:
您在像PyCharm这样的IDE中运行此代码。 IDE将ctrl + c(keyboardinterrupt)作为副本。尝试在终端中运行您的代码。
答案 3 :(得分:1)
有效。
我正在使用Ubuntu Linux,你呢? 使用MaxVal = 10000000
之类的东西再次测试它答案 4 :(得分:0)
它确实打破了循环并打印“完成”。