Python et la création d'un interpréteur *************************************** Il est souvent utile de créer des outils en ligne de commande du type interpréteur. Un interpréteur va plus loin qu'une simple ligne de commande dans le sens où il n'y a pas de scénario pré-établie. Python comporte son propre interpréteur (à lancer en ligne de commande par python) et on peut utiliser ce dernier pour créer sont interpréteur. .. code-block:: python import cmd import string, sys class CLI(cmd.Cmd): def __init__(self): cmd.Cmd.__init__(self) self.prompt = '> ' def do_hello(self, arg): print "hello again", arg, "!" def help_hello(self): print "syntax: hello [message]", print "-- prints a hello message" def do_quit(self, arg): sys.exit(1) def help_quit(self): print "syntax: quit", print "-- terminates the application" #integre function et help def do_greet(self, person): """greet [person] Greet the named person""" print person #ne fait rien si ligne vide def emptyline(self): pass # shortcuts do_q = do_quit # # try it out cli = CLI() cli.cmdloop() ce qui donne :: $ python cmd-example-1.py > help Documented commands (type help ): ======================================== hello quit Undocumented commands: ====================== help q > hello world hello again world ! > q .. note:: cet interpréteur comporte déjà la gestion des aides, historiques, ... Une documentation complète sur cette classe est disponible sur le lien `http://docs.python.org/library/cmd.html `_ Il est aussi possible d'utiliser un interpréteur avec une ligne de commande (mode "une commande") .. code-block:: python import cmd class InteractiveOrCommandLine(cmd.Cmd): """Accepts commands via the normal interactive prompt or on the command line.""" def do_greet(self, line): print 'hello,', line def do_EOF(self, line): return True if __name__ == '__main__': import sys if len(sys.argv) > 1: InteractiveOrCommandLine().onecmd(' '.join(sys.argv[1:])) else: InteractiveOrCommandLine().cmdloop()