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
相关产品推荐
相关产品推荐

