You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何实现Ctrl-C仅终止input输入而不退出整个程序

实现方案

你要的效果可以通过捕获KeyboardInterrupt异常实现,Ctrl+C触发的该异常默认会向上冒泡终止整个程序,你只需要在输入环节局部捕获该异常、返回空字符串即可,不会影响程序其他部分的运行。

修改后的代码如下:

import readline

def readline_input(prompt, prefill=""):
    readline.set_startup_hook(lambda: readline.insert_text(prefill))
    try:
        return input(prompt)
    except KeyboardInterrupt:
        # 捕获Ctrl+C,返回空字符串等价于输入空内容
        print() # 可选,加这行是为了换行,避免下一行输出和当前提示符挤在同一行
        return ""
    finally:
        readline.set_startup_hook()

# 原do_something方法注意补充语法缺失的冒号
def do_something(): 
    command_str = readline_input(self.shell_prompt(), default_prompt)
    command_str = command_str.strip()
    # 后续业务逻辑正常执行即可

效果说明

  • 输入过程中按下Ctrl+C,会直接返回空字符串,后续调用strip()处理后也是空值,符合你要求的「效果等同于输入空内容」的需求
  • 异常仅在readline_input函数内部被捕获,不会向外抛出,因此不会终止整个程序
  • finally块的钩子清理逻辑仍然会正常执行,不会影响后续的输入功能

内容的提问来源于stack exchange,提问作者Oliver Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:39:03