Interactions avec l'utilisateur =============================== les prompts -------------- `raw_input` ou `input` (raw_input renvoie une string, input essayes d'évaluer, soyez prudent...) >>> from subprocess import call >>> filename = input("quel fichier voulez-vous afficher ?\n") >>> call("cat " + filename, shell=True) .. _cmdlabel: le module :mod:`cmd` et les interpréteurs -------------------------------------------- le monde des interpréteur ligne de commande... Peu après l'âge de bronze vint le temps de l'interpréteur ligne de commande, c'est-à-dire quelque chose de plus spécifique que **l'application ligne de commande**, ou que l'utilitaire ligne de commande. Un interpréteur ligne de commande est un programme qui : - est forcément plein texte - vous donne un prompt - prends toutes ses entrées d'un coup - produit une sortie (typiquement des lignes de texte) - vous redonne un prompt Le shell unix est un bon exemple d'interpréteur ligne de commande. Un utilitaire ligne de commande est un programme unix-like qui prend toutes les entrées d'un coup, et qui vous renvoie une sortie d'un coup. le module :mod:`cmd` : exemple d'utilisation .. module:: cmd :synopsis: interpréteur ligne de commande .. literalinclude:: snippets/cli.py :download:`telecharger cmd <snippets/cli.py>` :: >>> from cli import Cli >>> prompt = Cli() >>> prompt.cmdloop() cli (command line interpreter) (type help or ? for commands list) #Prompt> ? Documented commands (type help <command>): ========================================== EOF exit Undocumented commands: ====================== cmd help quit #Prompt> pour ajouter une commande, utiliser simplement l'héritage:: >>> from cli import Cli >>> class Prompt(Cli): ... def do_hello(self, line): ... print "hello %s", line ... >>> prompt = Prompt() >>> prompt.cmdloop() cli (command line interpreter) (type help or ? for commands list) #Prompt> ? Documented commands (type help <command>): ========================================== EOF exit Undocumented commands: ====================== cmd hello help quit #Prompt> hello world .. todo:: faire un petit projet d'interpréteur ligne de commande du jeu C+/C- lire et écrire dans un fichier ------------------------------- les **handle de fichier** (file handles) >>> >>> fh = file('test', 'w') >>> fh.write('hello world') >>> fh.close() >>> content = file('test', 'r').read() >>> content 'hello world' >>>