退出code.InteractiveConsole()。interact()而不退出主程序

时间:2016-04-26 13:55:53

标签: python interactive

我有一个需要嵌入Python交互式控制台的Python程序。

我目前正使用InteractiveConsole模块中的code

code.InteractiveConsole().interact()

但是,如果我在控制台中输入exit(),则会退出整个程序。

如何在不退出主程序的情况下退出交互式控制台?

1 个答案:

答案 0 :(得分:2)

感谢@PhillipMartin,我在阅读完链接后成功完成了这项工作:https://www.reddit.com/r/Python/comments/30i599/gracefully_break_out_of_codeinteractiveconsole/

def console_exit():
    raise SystemExit

try:
    code.InteractiveConsole(locals={"exit": console_exit}).interact()
except SystemExit:
    pass

# Continue doing stuff

这使得控制台中的exit只能引发SystemExit,而不会改变其他内容(比如操纵stdin等),并在外部程序中拦截它。

顺便说一句,因为我不需要继承code.InteractiveConsole我应该使用code.interact(...)代替。