V. Les commandes magiques▲
Les commandes magiques sont un ensemble de commandes spécifiques à IPython précédées de '%'.
Autant dire que ces commandes constituent le « gros morceau » d'IPython.
Vous trouverez dans ce qui suit un inventaire des commandes magiques qui nous ont paru les plus pertinentes dans le cadre de cet article.
V-A. %alias▲
La commande %alias permet de définir un alias pour des commandes système.
Par exemple :
# Création de l"alias mon_dir
# Liste des fichiers *.sys du répertoire c:\tmp (récursif).
# Puis lancement de l'alias et affichage du résultat
In [86
]: %
alias mondir dir "c:
\t
mp\*.sys"
/
s /
b
In [87
]: mondir
IPython system call: dir "c:
\t
mp\*.sys"
/
s /
b
c:\tmp\Medion\V.1.3.2.5
\3
xHybrid.sys
c:\tmp\msi\driver\Windows_2000\RT2500.SYS
c:\tmp\msi\driver\Windows_2000\rt2500usb.sys
c:\tmp\msi\driver\Windows_2000\RT61.sys
c:\tmp\msi\driver\Windows_98\RT25009X.SYS
c:\tmp\msi\driver\Windows_98\RT25U98.SYS
c:\tmp\msi\driver\Windows_98\RT619x.sys
c:\tmp\msi\driver\Windows_ME\RT25009X.SYS
c:\tmp\msi\driver\Windows_ME\RT25U98.SYS
c:\tmp\msi\driver\Windows_ME\RT619x.sys
c:\tmp\msi\driver\Windows_XP\RT2500.SYS
c:\tmp\msi\driver\Windows_XP\rt2500usb.sys
c:\tmp\msi\driver\Windows_XP\RT61.sys
c:\tmp\msi\driver\Windows_XPx64\rt2500.sys
c:\tmp\msi\driver\Windows_XPx64\rt2500usb.sys
c:\tmp\msi\driver\Windows_XPx64\rt61.sys
Vous pouvez aussi utiliser %s pour afficher les arguments passés lors de l'appel :
# Création de l'alias sayHello
# La commande est un echo avec 2 arguments (%s)
# Enfin lancement de la commande par l'alias et affichage du résultat
In [94
]: %
alias sayHello echo "Bonjour ton nom est
%s
et ton prenom est
%s
"
In [95
]: sayHello Peyroux Jean
IPython system call: echo "Bonjour ton nom est Peyroux et ton prenom est Jean"
"Bonjour ton nom est Peyroux et ton prenom est Jean"
V-B. %bookmark▲
%bookmark vous permet de créer simplement un lien vers un répertoire.
# Créer un bookmark du répertoire courant :
%
bookmark monBookmark
# Créer un bookmark sur le répertoire '/home/peyroux/Python'
%
bookmark maHomePython /
home/
peyroux/
Python
# Lister les bookmarks
%
bookmark -
l
# Aller dans un répertoire "bookmarké" :
%
cd -
b maHomePython
# Supprimer un bookmark :
%
bookmark -
d <
name>
# Supprimer tous les bookmark :
%
bookmark -
r
V-C. %cpaste▲
La commande %cpaste permet de coller du code python venant du presse papier afin de l'exécuter.
Une fois tout le code collé, il faut taper '--' pour provoquer l'exécution du contenu.
Un exemple : le code suivant vient d'un fichier texte.
monNom =
"John Doe"
print
monNom +
"
\n
"
print
monNom.upper
(
)
Une fois copié dans le presse-papier, on colle dans la console IPython ces quelques lignes.
In [8
]: %
cpaste
Pasting code; enter '--'
alone on the line to stop.
# J'ai fait le coller à cet endroit
:monNom =
"John Doe"
:print
monNom
:print
monNom.upper
(
)
:--
# Le résultat
John Doe
JOHN DOE
V-D. %dhist▲
La commande %dhist affiche la liste des répertoires visités durant la session courante
# Je vais dans le répertoire 'c:\Documents and Settings'
In [1
]: cd c:\Documents and
Settings\
c:\Documents and
Settings
In [2
]: cd c:\Documents and
Settings\eric\Bureau\
c:\Documents and
Settings\eric\Bureau
In [3
]: cd
C:\Documents and
Settings\eric
In [4
]: %
dhist
Directory history (
kept in
_dh)
0
: C:\Documents and
Settings\eric
1
: c:\Documents and
Settings
2
: c:\Documents and
Settings\eric\Bureau
3
: C:\Documents and
Settings\eric
V-E. %edit▲
Vous pouvez utiliser votre éditeur de texte favori avec IPython pour éditer des instructions tapées. Le code est alors placé dans l'éditeur puis exécuté lors de la fermeture de l'éditeur.
In [28
]: age =
19
In [29
]: if
age >=
18
:
....: print
'majeur'
....:
....:
majeur
In [30
]: %
ed 28
29
En exécutant %edit 2-3 vous allez lancer votre éditeur de texte. Les lignes 2 à 3 sont alors incluses dans l'éditeur et sont exécutées dans IPython après la fermeture.
Vous pouvez aussi utiliser la commande magique de la façon suivante :
%
edit 2
8
10
21
-
25
Celle-ci éditera les lignes 2, 8 10 puis les lignes situées entre 21 et 25.
Pour ne pas exécuter le code après la fermeture de l'éditeur, utilisez l'argument -x
# Ouvre l'éditeur et place le code tapé dans IPython des lignes 1 à 4
In [12
]: %
ed -
x 1
-
4
# Après fermeture le code n'est pas exécuté
Il est possible de modifier l'éditeur par défaut (notepad pour Windows) et d'entrer un éditeur personnalisé. Pour cela, il faut éditer le fichier ipythonrc.ini qui se trouve dans le répertoire c:\Documents and Settings\$monProfile\_ipython\ ou dans le répertoire de votre « home » pour les autres systèmes d'exploitation.
V-F. %exit, %quit▲
Ces deux commandes provoquent la sortie de IPython avec confirmation.
V-G. %history ou %hist▲
Cette commande permet d'afficher l'historique des commandes tapées dans IPython
Plusieurs utilisations possibles :
- Sans argument : retourne les 40 dernières commandes tapées.
- Un argument : retourne le nombre de commandes passé en argument.
- Deux arguments : retourne les commandes tapées entre le premier et le deuxième argument.
# Affichage des 40 dernières lignes
%
hist
85
: _ip.system
(
r'dir "c:\tmp\*.sys" /s /b '
)
86
: _ip.magic
(
r'%alias mondir dir "c:\tmp\*.sys" /s /b'
)
87
: _ip.system
(
r'dir "c:\tmp\*.sys" /s /b '
)
88
: #?%alias
89
: _ip.magic
(
'%alias sayHello echo "Bonjour
%s
"'
)
90
: _ip.system
(
'echo "Bonjour eric" '
)
...
# Affichage des 4 dernières lignes :
%
hist 4
13
: _ip.magic
(
"ls -al"
)
14
: _ip.magic
(
"pwd"
)
15
: _ip.magic
(
"cd $HOME"
)
16
: _ip.magic
(
"mutt"
)
# Affichage des lignes 3 à 6
%
hist 3
6
3
: _ip.system
(
"dir /on "
)
4
: _ip.magic
(
"cd "
)
5
: _ip.system
(
"dir /on "
)
V-H. %macro▲
%macro permet de définir une portion de code, de le stocker et de l'exécuter ultérieurement.
In[1
]:nom =
"Peyroux"
In[2
]: print
nom
In[3
]: %
macro maMacro 1
-
2
In[4
]: maMacro
# Résultat, la macro affiche :
'Peyroux'
V-I. %lsmagic, %magic▲
%lsmagic permet d'obtenir la liste des commandes magiques disponibles.
In [22]: %lsmagic
Available magic functions:
%Exit %Pprint %Quit %alias %autocall %autoindent %automagic %bg %bookmar
k %cd %clear %color_info %colors %cpaste %debug %dhist %dirs %ed %edit
%env %exit %hist %history %logoff %logon %logstart %logstate %lsmagic
%macro %magic %p %page %pdb %pdef %pdoc %pfile %pinfo %popd %profile
%prun %psearch %psource %pushd %pwd %pycat %quickref %quit %r %rehash
%rehashdir %rehashx %reset %run %runlog %save %sc %store %sx %system_v
erbose %time %timeit %unalias %upgrade %who %who_ls %whos %xmode
Automagic is ON, % prefix NOT needed for magic functions.
%magic est le mode d'emploi détaillé de l'ensemble des commandes magiques.
IPython's 'magic' functions
===========================
The magic function system provides a series of functions which allow you to
control the behavior of IPython itself, plus a lot of system-type
features. All these functions are prefixed with a % character, but parameters
are given without parentheses or quotes.
NOTE: If you have 'automagic' enabled (via the command line option or with the
%automagic function), you don't need to type in the % explicitly. By default,
IPython ships with automagic on, so you should only rarely need the % escape.
Example: typing '%cd mydir' (without the quotes) changes you working directory
to 'mydir', if it exists.
You can define your own magic functions to extend the system. See the supplied
ipythonrc and example-magic.py files for details (in your ipython
configuration directory, typically $HOME/.ipython/).
You can also define your own aliased names for magic functions. In your
ipythonrc file, placing a line like:
---Return to continue, q to quit---
....
V-J. %logon, %logoff, %logstart▲
L'ensemble de ces commandes permet la prise en charge du log de l'historique des instructions tapées dans IPython.
%logstart permet de démarrer le log.
Le log est créé dans le répertoire courant. Par défaut il est automatiquement nommé 'ipython_log.py'.
Il est possible de spécifier autre emplacement et un autre nom pour le fichier de log :
%
logstart -
r 'c:
\t
mp\log.txt'
Plusieurs options sont possibles concernant le contenu du log :
Argument |
Signification |
---|---|
-o |
Affiche également le résultat des commandes |
-r |
Enregistrement brut, tout ce qui est tapé |
-t |
Affiche la date et l'heure devant chaque commande |
Par exemple, à la suite des commandes suivantes tapées dans l'interpréteur IPython :
In [1
]: %
logstart -
r 'c:
\t
mp\python.log'
Activating auto-
logging. Current session state plus future input saved.
Filename : c:\tmp\python.log
Mode : backup
Output logging : False
Raw input log : True
Timestamping : False
State : active
In [2
]: print
'bonjour'
bonjour
In [3
]: import
os
In [4
]: print
os.sys.platform
win32
%logoff interromp temporairement le log des actions.
%logon redémarre un log suspendu.
Enfin, %logstate affiche l'état du log et le fichier dans lequel il est placé.
Si l'on ouvre le fichier 'c:\tmp\python.log', on obtiendra le résultat suivant :
V-K. %psearch▲
La commande %psearch permet la recherche poussée
%psearch a* : Objets commençants par un a
%psearch -e builtin a* : Objets qui n'est pas dans le "builtin space" commençant par un a
%psearch a* function : Toutes les fonctions qui commences par un a
%psearch re.e* : Objets qui commencent par un e dans le module re
%psearch r*.e* : Objets qui commencent par un e dans un ou des modules commençant par un r
%psearch r*.* string : Toutes chaines (strings) dans un ou des modules commençant par un r
%psearch -c a* : [-c - Case sensitive] Liste les objets commençants par la minuscule
%psearch -a _* : List des objets commençant par un underscore
sys.s*? est équivalent à %psearch sys.s*
Quelques exemples :
# Chercher tout objet contenu dans le module os et commençant par p
In [65
]: %
psearch os.g*
os.getcwd
os.getcwdu
os.getenv
os.getpid
# Chercher un module commençant par ft
In [60
]: %
psearch ft*
ftplib
# Chercher dans le module os une fonction commençant par get
In [63
]: %
psearch os.get*
function
os.getenv
V-L. %psource▲
Par exemple, si vous voulez afficher la source de la méthode login() du module ftplib:
import
ftplib
In [46
]: %
psource ftplib.FTP.login
Résultat :
V-M. %quickref▲
La commande %quickref affiche la documentation succincte de IPython :
IPython -- An enhanced Interactive Python - Quick Reference Card
================================================================
obj?, obj??, ?obj,??obj : Get help, or more help for object
?os.p* : List names in os starting with p
Example magic:
%alias d ls -F : 'd' is now an alias for 'ls -F'
alias d ls -F : Works if 'alias' not a python name
alist = %alias : Get list of aliases to 'alist'
System commands:
!cp a.txt b/ : System command escape, calls os.system()
cp a.txt b/ : after %rehashx, most system commands work without !
cp ${f}.txt $bar : Variable expansion in magics and system commands
files = !ls /usr : Capture sytem command output
files.s, files.l, files.n: "a b c", ['a','b','c'], 'a\nb\nc'
cd /usr/share : Obvious, also 'cd d:\home\_ipython' works
History:
_i, _ii, _iii : Previous, next previous, next next previous input
_i4, _ih[2:5] : Input history line 4, lines 2-4
exec _i81 : Execute input history line #81 again
_, __, ___ : previous, next previous, next next previous output
_dh : Directory history
_oh : Output history
%hist : Command history
Autocall:
f 1,2 : f(1,2)
/f 1,2 : f(1,2) (forced autoparen)
,f 1 2 : f("1","2")
;f 1 2 : f("1 2")
%Exit:
Exit IPython without confirmation.
%Pprint:
Toggle pretty printing on/off.
%Quit:
Exit IPython without confirmation (like %Exit).
%alias:
Define an alias for a system command.
%autocall:
Make functions callable without having to type parentheses.
%autoindent:
Toggle autoindent on/off (if available).
%automagic:
Make magic functions callable without having to type the initial %.
%bg:
Run a job in the background, in a separate thread.
%bookmark:
Manage IPython's bookmark system.
%cd:
Change the current working directory.
%clear:
Clear various data (e.g. stored history data)
%color_info:
Toggle color_info.
%colors:
Switch color scheme for prompts, info system and exception handlers.
%cpaste:
Allows you to paste & execute a pre-formatted code block from clipboar
%debug:
Activate the interactive debugger in post-mortem mode.
%dhist:
Print your history of visited directories.
%dirs:
Return the current directory stack.
%ed:
Alias to %edit.
%edit:
Bring up an editor and execute the resulting code.
%env:
List environment variables.
%exit:
Exit IPython, confirming if configured to do so.
%hist:
Alternate name for %history.
%history:
Print input history (_i<n> variables), with most recent last.
%logoff:
Temporarily stop logging.
%logon:
Restart logging.
%logstart:
Start logging anywhere in a session.
%logstate:
Print the status of the logging system.
%lsmagic:
List currently available magic functions.
%macro:
Define a set of input lines as a macro for future re-execution.
%magic:
Print information about the magic function system.
%p:
Just a short alias for Python's 'print'.
%page:
Pretty print the object and display it through a pager.
%pdb:
Control the automatic calling of the pdb interactive debugger.
%pdef:
Print the definition header for any callable object.
%pdoc:
Print the docstring for an object.
%pfile:
Print (or run through pager) the file where an object is defined.
%pinfo:
Provide detailed information about an object.
%popd:
Change to directory popped off the top of the stack.
%profile:
Print your currently active IPython profile.
%prun:
Run a statement through the python code profiler.
%psearch:
Search for object in namespaces by wildcard.
%psource:
Print (or run through pager) the source code for an object.
%pushd:
Place the current dir on stack and change directory.
%pwd:
Return the current working directory path.
%pycat:
Show a syntax-highlighted file through a pager.
%quickref:
Show a quick reference sheet
%quit:
Exit IPython, confirming if configured to do so (like %exit)
%r:
Repeat previous input.
%rehash:
Update the alias table with all entries in $PATH.
%rehashdir:
Add executables in all specified dirs to alias table
%rehashx:
Update the alias table with all executable files in $PATH.
%reset:
Resets the namespace by removing all names defined by the user.
%run:
Run the named file inside IPython as a program.
%runlog:
Run files as logs.
%save:
Save a set of lines to a given filename.
%sc:
Shell capture - exécute a shell command and capture its output.
%store:
Lightweight persistence for python variables.
%sx:
Shell execute - run a shell command and capture its output.
%system_verbose:
Set verbose printing of system calls.
%time:
Time execution of a Python statement or expression.
%timeit:
Time execution of a Python statement or expression
%unalias:
Remove an alias
%upgrade:
Upgrade your IPython installation
%who:
Print all interactive variables, with some minimal formatting.
%who_ls:
Return a sorted list of all interactive variables.
%whos:
Like %who, but gives some extra information about each variable.
%xmode:
Switch modes for the exception handlers.
V-N. %run▲
%run exécute un script python.
Usage : %
run [-
n -
i -
t [-
N<
N>
] -
d [-
b<
N>
] -
p [profile options]] file [args]
Exemple d'utilisation courante des différents arguments :
- -t : Pour retourner le temps CPU
- -d : Pour lancer le débogage pdb
- -b 40 : Pour commencer le débogage ligne 40
V-O. %save▲
%save ressemble en tout point à la commande %edit mais au lieu d'éditer des commandes IPython, ces dernières sont sauvegardées dans un fichier.
%
save monFichier 2
8
10
-
13
Sauvegarde dans monFichier.py les lignes 2, 8 et les lignes situées entre 10 et 13.
Par défaut, le fichier est enregistré dans votre home. Il est possible de spécifier un chemin, reprenons l'exemple précédent :
In [40
]: %
save "c:
\t
mp\monFichier.py"
28
29
....:
The following commands were written to file `c:\tmp\monFichier.py`:
age =
19
if
age >=
18
:
print
'majeur'
V-P. %store▲
%store permet une prise en charge « allégée » de la persistance des variables créées dans l'interpréteur IPython (dans la documentation : Lightweight persistence for python variables).
L'usage :
%
store -
Show list of all variables and
their current values
%
store <
var>
-
Store the *
current*
value of the variable to disk
%
store -
d <
var>
-
Remove the variable and
its value from
storage
%
store -
z -
Remove all variables from
storage
%
store -
r -
Refresh all variables from
store (
delete current vals)
%
store foo >
a.txt -
Store value of foo to new file a.txt
%
store foo >>
a.txt -
Append value of foo to file a.txt\
Quelques exemples d'utilisation :
In[1
]: nom =
"Jean"
In[2
]: %
store nom
Après avoir quitté IPython, vous pourrez retrouver votre variable sauvée précédemment :
In[1
]: print
nom affiche "Jean"
%store permet également de stocker d'autres types de variables comme des listes, des objets …
In [137
]: listeDuPathCourant =
!
dir c:\tmp\garmin\*
.*
/
b
IPython system call: dir c:\tmp\garmin\*
.*
/
b
==
['016901000370.rgn'
, '042003600370.rgn'
, 'UPDATE.TXT'
, 'Updater.exe'
]
In [138
]: %
store listeDuPathCourant
Stored 'listeDuPathCourant'
(
SList)
Il est également possible d'afficher la liste des éléments stockés en tapant simplement %store
In [139
]: %
store
Stored variables and
their in
-
db values:
listeDuPathCourant ->
['016901000370.rgn'
, '042003600370.rgn'
, 'UPDA
TE.T
monNom -> '
Jean Peyroux'
#efface une variable
%
store -
d monNom
V-Q. %who, %whos▲
%who retourne la liste les variables en mémoire pour la session courante et des variables et objets persistants.
In [31
]: who
listeDuPathCourant monLs monNom
%whos liste détaillée des variables en mémoire de la session courante. Les types et les valeurs sont spécifiés.
In [32
]: whos
Variable Type Data/
Info
---------------------------------------
listeDuPathCourant SList ['016901000370.rgn'
, '042<...>DATE.TXT'
, 'Updater.
exe'
]
monLs SList [''
]
monNom str Jean Peyroux