Simulation von CLI Shell mit Python

Ich wurde gebeten, CLI mit Python zu simulieren.

Das habe ich getan

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" 

Ich überprüfe auch die Länge der Liste, hier "splitit" Ich erlaube nur 3 Argumets, zuerst wird die Operation sein, und zweites und drittes sind die Argumente, mit denen einige Funktionen durchgeführt werden sollen, falls das Argument mehr ist als 3, dafür stelle ich einen Scheck ein.

Obwohl irgendwie schaffe ich es zu arbeiten, aber gibt es einen besseren Weg, um das gleiche zu erreichen?

2 Solutions collect form web for “Simulation von CLI Shell mit Python”

Python CMD Modul verwenden:

Überprüfen Sie einige Beispiele auf den folgenden Seiten

http://docs.python.org/library/cmd.html # Unterstützung für linienorientierte Befehlsdolmetscher

http://www.doughellmann.com/PyMOTW/cmd – # Erstellen Sie line-orientierte Befehlsprozessoren

prompt kann auf einen String gesetzt werden, der jedes Mal gedruckt wird, wenn der Benutzer nach einem neuen Befehl gefragt wird.

intro ist die "Willkommen" -Meldung, die zu Beginn des Programms gedruckt wird.

z.B:

 import cmd class HelloWorld(cmd.Cmd): """Simple command processor example.""" prompt = 'prompt: ' intro = "Simple command processor example." 

Du solltest den VTE lib ausprobieren:

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

Es funktioniert wirklich gut und man kann ganz einfach seinen Look anpassen. So einfach ist es:

  # 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) 
  • Wie man eine Command Line Interface oder einen Interpreter in Python macht
  • Non-print Ausgabe in tty in Python?
  • Wie lese ich von stdin oder aus einer Datei, wenn keine Daten in Python geleitet werden?
  • Ruf einen EDITOR (vim) aus einem Python-Skript auf
  • Python ist die beste Programmiersprache der Welt.