0
我想在程序中提供類似於IPython的交互式提示。具有自動完成類和對象的自定義交互式終端(CLI)
我想有特點是:
- 自定義提示
- 上對象的方法自動完成和屬性
- 執行的方法,讀/寫屬性的錯誤
- 顯示文檔字符串
到目前爲止,我一直在玩readline
自動完成callba ck功能和魔術方法,如__dir__
,__doc__
或__dict__
。
我確定我可以實現這樣的解決方案,但我正在尋找一個可以爲我完成這項工作的現有模塊。
在我的想法,我想用這樣的:
class Foo:
def Say(self):
return "The answer is 42"
foo = Foo()
cli = Cli() # The terminal interface I want to have
cli.RegisterObject(foo, showAttributes = True, showProtected = True)
cli.AddCommand('exit', exit)
cli.Start(defaultPrompt = ">")
一個朋友建議我使用IPython的,而不是定製的解決方案。不幸的是,IPython對於我的應用程序來說太開放了,新手們肯定會感到困惑。我不希望最終用戶能夠訪問所有內容。
在年底,我們將有這樣的事情:
$ ./cli.py
>foo.<tab>
Say
>foo.Say()
The answer is 42
>bar.AreYouHere()
Unknown command!
>exit
一些相關的問題是:
- Custom interactive shell with python
- Custom Interactive shell with AutoComplete
- Simulating cli shell with python
- Creating a CLI (Shell?) in Python
不幸的是,答案建議使用cmd模塊,這不是我所需要的。
[嵌入IPython的](HTTP是可用的(包括實施例)提供了很多附加的配置選項:// IPython中。組織/ IPython的-DOC/2 /互動/#的reference.html嵌入)。比製作IPython更好,因爲它是_is_ IPython。 :-) – theB
這是一個實際的答案 – theB