相关疑难解决方法(0)

Python - 用于停止无限循环的键盘命令?

可能重复:
为什么我不能在python中处理KeyboardInterrupt?

我正在玩一些Python代码并创建了一个无限循环:

y = 0
x = -4

itersLeft = x
while(itersLeft<0):
    y = y + x
    itersLeft = itersLeft - 1
    print "y = ",y, "itersLeft = ", itersLeft

print y
Run Code Online (Sandbox Code Playgroud)

是否有键盘快捷键可以让我停止循环 - 允许我修复循环然后重新启动它?

我试过Ctrl+ C并没有任何运气.如果它有助于我使用Windows 7环境.

谢谢.

编辑


我还应该提到我正在使用Aptana Studio 3并试图在其中运行Ctrl+ C命令.它在那里不起作用 - 但在常规控制台中尝试它可以正常工作.我假设它必须是因为Aptana环境.

python aptana command-line keyboard-shortcuts infinite-loop

21
推荐指数
1
解决办法
16万
查看次数

在Mac上的终端停止python

在Mac上的终端中使用python,输入

ctrl-z
Run Code Online (Sandbox Code Playgroud)

将停止python,但不退出它,给出如下输出:

>>> 
[34]+  Stopped                 python
Run Code Online (Sandbox Code Playgroud)

如你所见,我已经停止了34次python调用.

虽然我可以使用

>>> exit()
Run Code Online (Sandbox Code Playgroud)

退出python,问题是:

  1. 在终端中是否有一个真正退出(而不仅仅是停止)python的短信?而且,为什么

    CTRL-C

    不起作用?

  2. 我如何杀死所有已停止的python?

顺便说一句,我怎么能用键盘外观输入'ctrl-c'和其他热键呢?

谢谢!

python macos terminal

17
推荐指数
1
解决办法
6万
查看次数

如何在Python中安全地停止无限循环?

我有一个在无限循环上运行的脚本,并将数据添加到数据库中并执行我不能只停留一半的事情,所以我不能只按ctrl + C并停止它.

我希望能够以某种方式停止while循环,但让它在停止之前完成它的最后一次迭代.

让我澄清一下:

我的代码看起来像这样:

while True:
    does something
    does more things
    does more things
Run Code Online (Sandbox Code Playgroud)

我希望能够在结束或开始时中断while循环,但不能在执行操作之间中断,因为这样会很糟糕.

如果我想继续,我不希望它在每次迭代后都问我.

感谢您的回答,我非常感激,但我的实施似乎并没有起作用:

def signal_handler(signal, frame):
        global interrupted
        interrupted = True

class Crawler():
    def __init__(self):
    # not relevent

    def crawl(self):
        interrupted = False
        signal.signal(signal.SIGINT, signal_handler)
        while True:
            doing things
            more things

            if interrupted:
                print("Exiting..")
                break
Run Code Online (Sandbox Code Playgroud)

当我按下ctr + c时,程序就会一直无视我

python infinite-loop

13
推荐指数
2
解决办法
2万
查看次数