簡體   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