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*18045.00000000000001 -
cmath : accès aux fonctions mathématiques complexes
Sélectionnez>>>cmath.exp(cmath.pi*1j)+11.2246467991473532e-16j -
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.


