[英]Redirect python interactive help()
我正在使用Qt為應用程序開發交互式python shell。 但是我似乎無法獲得重定向的交互式幫助。 我在我的python代碼中有這個:
class OutputCatcher:
def __init__(self):
self.data = ''
def write(self, stuff):
self.data += stuff
sys.stdout = OutputCatcher()
但是,當我運行help()時,它不會重定向交互式幫助,它只是將其轉儲到我運行python腳本的控制台。 如果我在控制台中按ctrl + c然后將其發送到我的OutputCatcher對象。
我確實試過谷歌,但真的找不到任何東西。
幫助不只是轉儲到stdout,而是與終端進行交互。 它也絕不意味着在shell之外使用,所以不會寫它來保證這些東西的工作。
你要做的是實現一個終端,這是一個非常重要的任務,但可能存在Qt的終端仿真庫。 可能甚至用Python編寫,當然還有綁定。
沒有必要猜測有什么幫助,只需閱讀來源。
內置的help
是在site.py中創建的,它是類_Helper
的一個實例。 調用它時,只需將調用委托給pydoc.help(...)
,你可以在pydoc.py中找到它。
class _Helper(object):
"""Define the built-in 'help'.
This is a wrapper around pydoc.help (with a twist).
"""
def __repr__(self):
return "Type help() for interactive help, " \
"or help(object) for help about object."
def __call__(self, *args, **kwds):
import pydoc
return pydoc.help(*args, **kwds)
pydoc.help是實例pydoc.Helper
與輸入/輸出設置為sys.stdin
, sys.stdout
,但(我懷疑這是你有你的問題),它使用的標准輸入/ AT的時候是pydoc標准輸出值是導入的,所以以后重新綁定它們將不會有任何影響。
我建議你用你自己的_Helper類替換內置的幫助實例,它會使用你需要的任何文件顯式創建一個新的pydoc Helper。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.