簡體   English   中英

使用Python Cmd類的面向行的命令解釋器的多種模式

[英]Multiple modes for line-oriented command interpreters with Python Cmd class

我正在嘗試使用支持2個或更多模式的Python Cmd類構建CLI(面向行的命令解釋器),每種模式具有不同的命令集,並帶有在它們之間進行切換的命令。

當前,我實現了2種模式,每種模式使用2個單獨的類,然后設置下一個類以在狀態變量中執行:

class OpMode(Cmd):
    def do_show(self, line):
        :
    def do_configure(self, line): # switch to ConfigMode
        ctx.state = 'config'
        return True

class ConfigMode(Cmd):
    def do_set(self, line):
        : 
    def do_exit(self, line):  # go back to OpMode
        ctx.state = 'op'
        return True

# in main ...
while 1:
    if ctx.state == 'op':
        opcli.cmdloop()
    elif ctx.state == 'conf':
        confcli.cmdloop()
    else:
        break

有沒有一種方法可以通過單個Cmd類實現相同的目的?

使用單個cmd實例不會改善您的代碼。 您可以在Cmd類中跟蹤狀態,然后針對每個命令操作相應地調整響應。

但是,您可能想要的是不同狀態之間更清晰的過渡。 您可以按照以下步驟進行操作:

def do_configure(self, line):
    config = ConfigMode(...)
    config.cmdloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM