Découverte de l'interpréteur interactif IPython


précédentsommairesuivant

IV. Interaction avec le shell

Bien que l'équipe d'IPyhton ne le considère pas comme un "véritable" shell système, IPython peut néamoins constituer une alternative pertinente à votre shell.

Pour lancer IPython en mode shell il vous suffit de l'exécuter avec les arguments suivants : -p pysh . Ceci execute le mode "InterpreterExec" de IPython.

Sous Windows, l'installation de IPython place deux raccourcis dans Démarrer > Programmes > IPython.
Le raccourci pysh lance IPython en mode shell.
Pour obtenir le même résultat en ligne de commande tapez : C:\Python25\python.exe C:\Python25\scripts\ipython -p sh.

L'équipe de IPython ne considère pas le mode InterpreterExec comme shell mais plutôt comme un ajout de fonctionnalités et l'apport d'un prompt customisé pour la navigation dans le système de fichiers (comme dans un shell unix). Par ailleurs le mode -pysh permet accès aux opérateurs $ et $$ pour la capture de la sortie d'une commande système.

On ne peut pas parler de shell au sens strict, bien des options manquent. Par exemple [ctrl-z] suspendra le processus de IPython et non plus celui qui "tourne" dans la console.

IV-A. Exécution d'une commande shell avec l'opérateur '!'

Utilisons la commande système dir (pour lister le répertoire 'c:\tmp').

 
Sélectionnez
In [1]: !dir c:\tmp
Image non disponible

Cette commande a pour effet de lancer la commande système dir c:\tmp et d'afficher la sortie de cette commande dans la console

Si vous voulez "capturer" la sortie de votre commande shell sous forme de séquence (tableau), utilisez alors !!. Exemple d'utilisation :

 
Sélectionnez
In [5]: !!dir c:\tmp
Image non disponible

La commander !!dir permet de récupérer la sortie de la commande comme une séquence Python.

Attention, l'affichage du résultat de ce type de commande (opérateur !!) peut légèrement différer des copies d'écran.

Il est également possible de récupérer le contenu du retour en utilisant le numéro de la ligne de commande préfixé par un blanc souligné (underline).

Par exemple, nous allons mettre le résultat de notre !!dir de la ligne 23 dans une variable :

 
Sélectionnez
monDir = _5
print monDir
# Affiche le résultat du !!dir c:\tmp

On peut aussi récupérer directement le résultat d'une commande système en faisant :

 
Sélectionnez
maVarDir = !dir c:\tmp

Pour afficher le contenu de ce que l'on a récupéré :

 
Sélectionnez
In [19]: for line in maVarDir:
   ....:     print line
   ....:

Le résultat de ces instructions :

Image non disponible

IV-B. Capture de la sortie standard d'une commande avec $ et $$

Lorsque IPython est lancé en mode shell (argument -p pysh), il est possible de récupérer le contenu d'une commande système dans une variable préfixée par $ ou $$.

Le symbole $ permet la capture de la sortie d'une commande système sous forme de texte :

Un exemple sous linux :

 
Sélectionnez
$monLs = ls
print monLs
	Desktop
	Documents
	Library

A la différence du symbole précédent, $$ récupère la sortie sous la forme d'une séquence :

 
Sélectionnez
peyroux@lapy[~]|28> $$monLs = ls
print monLs
['Desktop', 'Documents', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'Sites', 'opt']

Cela permet de traiter le résultat de votre commande shell comme bon vous semble :

 
Sélectionnez
# Afficher chaque ligne de la séquence
for fichier in monLs :
|..>	print fichier

Cette commande affiche sur une ligne chaque entrée de la séquence.

IV-C. Navigation dans le système de fichiers

Partons de l'arborescence suivante :

Navigation dans le système de fichiers
Navigation dans le système de fichiers

Il est possible de se déplacer facilement dans le système de fichiers en utilisant le début d'un nom de répertoire ou de fichier.

Par exemple avec la commande suivante :

 
Sélectionnez
%cd c:/Article_Dvp/c[TAB]

On obtient les deux répertoires se trouvant dans c:\article_dvp qui commencent par la lettre 'c':

Image non disponible

Idem pour les fichiers où avec la commande suivante :

 
Sélectionnez
%edit c:/Article_Dvp/Cache/introduction-ipython/i[TAB]

On obtient :

Image non disponible

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2007 Eric POMMEREAU Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.