formations/python/formation/prompt.txt

108 lines
2.5 KiB
Plaintext
Raw Permalink Normal View History

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'
>>>