III. Bibliothèque standard▲
Python dispose d'une très riche bibliothèque de modules étendant les capacités du langage dans de nombreux domaines : nouveaux types de données, interactions avec le système, gestion des fichiers et des processus, protocoles de communication (Internet, mail, FTP, etc.), multimédia, etc.
III-A. Gestion des arguments/options de la ligne de commande▲
Utilisation de sys.argv
Le module sys permet un accès direct aux arguments de la ligne de commande, via la liste sys.argv : sys.argv[0
] contient le nom du script exécuté, sys.argv[1
] le nom du 1er argument (s'il existe), etc. P.ex. :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
# Gestion simplifiée d'un argument entier sur la ligne de commande
import
sys
if
sys.argv[1
:]: # Présence d'au moins un argument sur la ligne de commande
try
:
n =
int(
sys.argv[1
]) # Essayer de lire le 1er argument comme un entier
except
ValueError
:
raise
ValueError
(
"L'argument '{}' n'est pas un entier"
.format
(
sys.argv[1
]))
else
: # Pas d'argument sur la ligne de commande
n =
101
# Valeur par défaut
Module argparse
Pour une gestion avancée des arguments et/ou options de la ligne de commande, il est préférable d'utiliser le module argparse. P.ex. :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
import
argparse
parser =
argparse.ArgumentParser
(
usage=
"
%(prog)s
[-p/--plot] [-i/--input coordfile | x1,y1 x2,y2 x3,y3]"
,
description=
__doc__
)
parser.add_argument
(
'coords'
, nargs=
'*'
, type=
str, metavar=
'x,y'
,
help=
"Coordinates of point"
)
parser.add_argument
(
'-i'
, '--input'
, nargs=
'?'
, type=
file,
help=
"Coordinate file (one 'x,y' per line)"
)
parser.add_argument
(
'-p'
, '--plot'
, action=
"store_true"
, default=
False
,
help=
"Draw the circumscribed circle"
)
parser.add_argument
(
'--version'
, action=
'version'
, version=
__version__
)
args =
parser.parse_args
(
)
Cette solution génère automatiquement une aide en ligne, p.ex. :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
$ python circonscrit.py -
h
usage: circonscrit.py [-
p/--
plot] [-
i/--
input coordfile |
x1,y1 x2,y2 x3,y3]
Compute the circumscribed circle to 3
points in
the plan.
positional arguments:
x,y Coordinates 'x,y'
of point
optional arguments:
-
h, --
help show this help message and
exit
-
i [INPUT], --
input [INPUT]
Coordinate file (
one 'x,y'
per line)
-
p, --
plot Draw the circumscribed circle
--
version show program's version number and exit
III-B. [c]Pickle : sérialisation des données▲
Les modules pickle/cPickle permettent la sauvegarde pérenne d'objets python (« sérialisation »).
2.
3.
4.
5.
6.
7.
8.
9.
>>>
d =
dict(
a=
1
, b=
2
, c=
3
)
>>>
l =
range(
10000
)
>>>
import
cPickle as
pickle # 'cPickle' est + rapide que 'pickle'
>>>
pkl =
open(
'archive.pkl'
, 'w'
) # Overture du fichier en écriture
>>>
pickle.dump
((
d, l), pkl, protocol=-
1
) # Sérialisation du tuple (d, l)
>>>
pkl.close
(
) # *IMPORTANT !* Fermeture du fichier
>>>
d2, l2 =
pickle.load
(
open(
'archive.pkl'
)) # Désérialisation (relecture)
>>>
(
d ==
d2) and
(
l ==
l2)
True
les pickles ne sont pas un format d'échange de données. Ils sont spécifiques à python, et peuvent dépendre de la machine utilisée.
III-C. Batteries included▲
Quelques modules de la bibliothèque standard qui peuvent être d'intérêt :
-
math : accès aux fonctions mathématiques réelles
Sélectionnez>>>
math.asin
(
math.sqrt
(
2
)/
2
)/
math.pi*
180
45.00000000000001
-
cmath : accès aux fonctions mathématiques complexes
Sélectionnez>>>
cmath.exp
(
cmath.pi*
1
j)+
1
1.2246467991473532e-16
j -
a ;
-
collections définit de nouveaux types spécialisés, p.ex. collections.OrderedDict, un dictionnaire ordonné ;
- itertools fournit des générateurs de boucle (itérateurs) et de combinatoire :
>>>
[ ''
.join
(
item) for
item in
itertools.combinations
(
'ABCD'
, 2
) ]
['AB'
, 'AC'
, 'AD'
, 'BC'
, 'BD'
, 'CD'
]
-
interactions avec le système :
- sys, os : interface système,
- shutil : opérations sur les fichiers (copy, move, etc.),
- subprocess : exécution de commandes système,
- glob : métacaractères du shell (p.ex. toto?.
*
) ;
- e : re ;
- gestion du temps (time) et des dates (datetime, calendar) ;
- fichiers compressés et archives : gzip, bz2, zipfile, tarfile ;
-
Lecture et sauvegarde des données (outre pickle/cPickle) :
- csv : lecture/sauvegarde de fichiers CSVComma Separated Values,
- ConfigParser : fichiers de configuration,
- json : lightweight data interchange format ;
- lecture d'une URL (p.ex. page web) : urllib2.