我有一个需要嵌入Python交互式控制台的Python程序。
我目前正使用InteractiveConsole
模块中的code
:
code.InteractiveConsole().interact()
但是,如果我在控制台中输入exit()
,则会退出整个程序。
如何在不退出主程序的情况下退出交互式控制台?
答案 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(...)
代替。