2013-01-08 11:15:45 +01:00
|
|
|
Interactions avec l'utilisateur
|
|
|
|
===============================
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
les prompts
|
2013-01-08 11:15:45 +01:00
|
|
|
--------------
|
|
|
|
|
|
|
|
`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:
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
le module :mod:`cmd` et les interpréteurs
|
2013-01-08 11:15:45 +01:00
|
|
|
--------------------------------------------
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
le monde des interpréteur ligne de commande...
|
2013-01-08 11:15:45 +01:00
|
|
|
|
|
|
|
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 :
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
- 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
|
2013-01-08 11:15:45 +01:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
le module :mod:`cmd` : exemple d'utilisation
|
2013-01-08 11:15:45 +01:00
|
|
|
|
|
|
|
.. 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>
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
pour ajouter une commande, utiliser simplement l'héritage::
|
2013-01-08 11:15:45 +01:00
|
|
|
|
|
|
|
>>> 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-
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
lire et écrire dans un fichier
|
2013-01-08 11:15:45 +01:00
|
|
|
-------------------------------
|
|
|
|
|
2013-05-15 10:47:55 +02:00
|
|
|
les **handle de fichier** (file handles)
|
2013-01-08 11:15:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
>>>
|
|
|
|
>>> fh = file('test', 'w')
|
|
|
|
>>> fh.write('hello world')
|
|
|
|
>>> fh.close()
|
|
|
|
>>> content = file('test', 'r').read()
|
|
|
|
>>> content
|
|
|
|
'hello world'
|
|
|
|
>>>
|