在python中使用cmd模块和argparse或optpars

2024-09-30 23:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python编写一个交互式shell,用于管理不同类型的硬件,以配置和发出一些命令集。在

如何工作:

因此,一旦进入交互式shell提示符,我需要输入一个硬件名称,比如HardwareA,之后我的shell提示符将变为HardwareA。一旦我得到了一个特定的硬件提示,之后我输入的任何命令或选项都将解析并调用HardwareA模块中的特定函数或方法。在

为了使这个工作正常,我尝试使用argparseoptparse以及cmd模块获得一些想法。在

但到目前为止,我还不能得到一个清晰的图像或任何好的文件开始。在

所以,如果有人有什么解决方案或良好的链接,请让我知道并给我一些启示。在

这是我的片段:

import cmd, shlex
import argparse

class ChooseHardware(cmd.Cmd):

    """Simple command processor example."""
    hardware = [ 'netapp', 'isilon', 'ibm' ]

    def do_netapp(self, argv):
        parser = argparse.ArgumentParser(description='Process netapp argument.')
        parser.add_argument('--qtree', dest='qtree',
                            help='qtree name')
        args = parser.parse_args(argv.split())
        print args

    def do_isilon(self, argv):
        pass

    def do_ibm(self, argv):
        pass

    def do_EOF(self, line):
        return True

    def do_exit(self, s):
        return True

    def do_help(self, h):
        print 'Unknown: hardware type'

    def help_exit(self):
        print "Exit the interpreter."
        print "You can also use the Ctrl-D shortcut."

if __name__ == '__main__':
    obj = ChooseHardware()
    obj.prompt = 'cmd_prompt:'
    obj.cmdloop()

输出:

^{pr2}$

提前谢谢。在


Tags: selfcmdparser硬件defargparsehelpargs