Simulating CLI Shell with python

2019-05-29 02:39发布

I was asked to simulate CLI with Python.

This is what I did

def somefunction(a,b):
    //codes here
//consider some other functions too

print "--- StackOverFlow Shell ---"
while True:
    user_input = raw_input("#> ")
    splitit = user_input.split(" ")
    if splitit[0] == "add":
        firstNum = splitit[1]
        sNum = splitit[2]
        result = somefunction(firstNum, sNum)
        print result
    //consider some other elif blocks with "sub", "div", etc
    else:
        print "Invalid Command"

I do also check the length of the list, here "splitit" I will allow only 3 argumets, first will be the operation, and second and third are the arguments with which some functions are to be performed, in case the argument is more than 3, for that i do put a check.

Though Somehow I manage to make it work, but is there a better way to achieve the same?

2条回答
够拽才男人
2楼-- · 2019-05-29 03:02

You should check out the VTE lib:

http://earobinson.wordpress.com/2007/09/10/python-vteterminal-example/

It works really well and you can very easily customize its look. This is how easy it is:

    # make terminal
    terminal = vte.Terminal()
    terminal.connect ("child-exited", lambda term: gtk.main_quit())
    terminal.fork_command()

    # put the terminal in a scrollable window
    terminal_window = gtk.ScrolledWindow()
    terminal_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
    terminal_window.add(terminal)
查看更多
疯言疯语
3楼-- · 2019-05-29 03:05

Use python CMD Module:

Check few examples given on the below pages

http://docs.python.org/library/cmd.html # Support for line-oriented command interpreters

http://www.doughellmann.com/PyMOTW/cmd - # Create line-oriented command processors

prompt can be set to a string to be printed each time the user is asked for a new command.

intro is the “welcome” message printed at the start of the program.

eg:

import cmd

class HelloWorld(cmd.Cmd):
    """Simple command processor example."""

    prompt = 'prompt: '
    intro = "Simple command processor example."
查看更多
登录 后发表回答