繁体   English   中英

如何退出运行python程序到python提示符?

[英]How to quit the running python program to python prompt?

我写了一个conway的生活游戏的实现。 我设置了两种模式,一种是自动,另一种是手动,我的意思是输出游戏结果的方式。 对于自动模式,我无法在没有ctrl + qctrl + c (打印出错误信息)的情况下停止正在运行的程序。 那么有什么方法可以让我停止正在运行的程序并通过按下我自己定义的一些键来返回到python >>>提示符,例如ctrl + k 谢谢。

你不能使用任意的按键,但是为了处理正常的中断(例如control-C)而没有错误你只需要捕获它引起的KeyboardInterrupt异常,即只需用你的所有循环代码包装它

try:
    functionthatloopsalot()
except KeyboardInterrupt:
    """user wants control back"""

要“控制回”到交互式提示符,脚本必须使用-i (用于“交互式”)运行,或者必须使用更高级的交互式Python shell,如ipython。

如果您能够拦截按键引发的事件并调用特定功能,则可以执行以下操作:

def prompt():
  import code
  code.interact(local=locals())

或者如果你使用IPython:

def prompt():
  from IPython.Shell import IPShellEmbed
  ipshell = IPShellEmbed()
  ipshell(local_ns=locals())

这将打开一个python或IPython shell,您可以在其中访问当前环境。

干杯安德烈

你是从迭代提示运行它,并希望回到提示。 或者,你是从shell运行它,并希望得到一个python提示符,但具有程序执行的当前状态?

对于后者,您可以在代码中使用键盘中断异常并跳转到python调试器(pdb)。

import pdb
try:
    mainProgramLoop()
except (KeyboardInterrupt, SystemExit):
    pdb.set_trace()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM