标签: keyboardinterrupt

Python 3 KeyboardInterrupt错误

我注意到在任何python 3程序中,无论你按CTRL c它是多么基本,它会使程序崩溃,例如:

test=input("Say hello")
if test=="hello":
    print("Hello!")
else:
    print("I don't know what to reply I am a basic program without meaning :(")
Run Code Online (Sandbox Code Playgroud)

如果按CTRL c,错误将是KeyboardInterrupt,无论如何阻止程序崩溃?

我想这样做的原因是因为我喜欢让我的程序有错误证明,每当我想把东西粘贴到输入中时我不​​小心按下CTRL c我必须再次通过我的程序..这只是非常讨厌.

ctrl keyboardinterrupt python-3.x

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

在ipython 5.0+中按Ctrl-C时在屏幕上留下不完整的行

在较旧的(我认为是5.0之前的版本)IPython中,如果我正在处理行/块,突然发现我需要研究其他事情来完成它,我的方法是按Ctrl-C,这留下了不完整的行/ block在屏幕上,但未执行,并给了我新的提示。也就是说,我会看到类似以下内容的内容:

In [1]: def foo():
   ...:     stuff^C  # <-- Just realized I needed to check something on stuff usage

In [2]:    # <-- cursor goes to new line, but old stuff still on terminal
Run Code Online (Sandbox Code Playgroud)

在较新的IPython中(这似乎已经从切换readlineprompt_toolkit的“CLI支持框架”),Ctrl-C键的不同的行为; 现在,它没有给我换行符,而是重置了当前行,丢弃了我键入的所有内容,并将光标返回到该行的开头。

# Before:
In [1]: def foo():
   ...:     stuff

# After Ctrl-C:
In [1]:   # Hey, where'd everything go?
Run Code Online (Sandbox Code Playgroud)

这非常烦人,因为在完成任何辅助任务后,我再也无法看到或复制/粘贴正在处理的代码来恢复工作,因此需要重新提示。

我的问题是:有什么方法可以还原旧的IPython行为,其中Ctrl-C执行以下操作:

  1. 至今未执行键入的行/块
  2. 留在屏幕上
  3. 能够选择(在配置时就可以)是否添加到历史记录中(这是个人喜好;您要在历史记录中使用半形式的内容,还是仅在终端上进行复制/粘贴?)
  4. 在到目前为止输入的文字下方为我提供了新的提示

我到处搜索,发现最多的是一个错误报告注释,该注释提到此新行为是“ ...是对IPython早期版本的更改,但这是有意的。”

在IPython或prompt_toolkit文档中,我找不到任何有关修改行为的文档;我已经找到了许多安装了这些处理程序的位置,但是尝试用猴子补丁来更改当前行为却失败了(坦率地说,用猴子补丁来记录未记录的代码意味着我冒着破坏每次升级的风险,所以我想找到一些对此的半支持修复;否则,可以接受hacky的猴子修补程序)。

python keyboard-shortcuts ipython keyboardinterrupt prompt-toolkit

2
推荐指数
1
解决办法
125
查看次数

在Python中,是否有可能在调用之后但在其后面的try块“之前”发生异常?

给定一个函数调用和紧随其后的 try 块,是否存在调用正常返回但引发异常且 try 块未捕获的情况?

例如:

# example 1
resource = acquire_a_resource()
try:
    resource.do_something()
    # some more code...
finally:
    resource.close()
Run Code Online (Sandbox Code Playgroud)

有没有可能acquire_a_resource()正常返回但resource.close()不会被调用?

或者换句话说,是否存在以下场景:

# example 2
resource = None
try:
    resource = acquire_a_resource()
    resource.do_something()
    # some more code...
finally:
    if resource:
        resource.close()
Run Code Online (Sandbox Code Playgroud)

会比示例 1 更安全吗?

KeyboardInterrupt也许是因为与/线程/信号有关?

python multithreading signals exception keyboardinterrupt

2
推荐指数
1
解决办法
105
查看次数

Python KeyboardInterrupt按钮

我正在使用red hat 5 linux,我想知道什么组合键在python 2.6中引发了KeyboardInterrupt异常.我知道它是Windows下的Ctrl + c.

问候,

python linux keyboardinterrupt

1
推荐指数
1
解决办法
606
查看次数

pyzmq Tornado ioloop:如何优雅地处理KeyboardInterrupt?

我可以在pyzmq eventloop中捕获KeyboardInterrupt:

try:
    ioloop.IOLoop.instance().start()
except KeyboardInterrupt:
    pass
Run Code Online (Sandbox Code Playgroud)

但这只会突然停止ioloop.我想检测KeyboardInterrupt并在清理后手动关闭ioloop.我怎样才能做到这一点?

python keyboardinterrupt pyzmq

1
推荐指数
1
解决办法
1454
查看次数