Dans la lignée du (Très) Grand listing des libs tierce partie les plus utiles en Python, voici la même chose mais pour les libs qui sont fournies en standard avec Python.
Bien entendu, il y a déjà une liste (bien plus complète), dans la documentation officielle. Mais la version ci-dessous vous propose uniquement les modules les plus utiles, en français, et surtout, avec une description de ce que vous pouvez faire avec (plutôt qu’une définition abstraite). Bonne découverte !
Sujet | Nom de la bibliothèque | Description |
Texte | ||
Extraction et formatage | string | Plein de choses dépréciées, mais une liste de constantes intéressantes comme par exemple tous les caractères ASCII en minuscule. |
re | Rechercher, extraire, splitter et remplacer avec des expressions rationnelles | |
difflib | Analyser la différence entre deux textes | |
logging | Puissant module pour créer des logs. Pratique pour stocker discrètement les erreurs, ou enregistrer l’activité de votre service dans un fichier. | |
fnmatch | Vérifie si une chaîne correspond à une motif de recherche unix. Par exemple « *.py » va matcher script.py. Une alternative simple aux expressions rationnelles pour créer des filtres. | |
shlex | Créer un petit parseur pour syntaxe régulière. On peut créer des mini-langages avec ou parser un fichier avec un format étrange. | |
Encodage | codecs | Opérations en vrac autour des encodages : lister les codecs disponibles, ouvrir un fichier dans un encodage précis, etc |
unicodedata | Principalement utile pour convertir les caractères spéciaux en leur équivalent ASCII. Ex : é => e | |
base64 | Encode vers et décode base16, 32 et 64. | |
binascii | Conversion du binaire vers l’ASCII et inversement. | |
Contrôle | getpass | Demander à l’utilisateur son mot de passe en ligne de commande, de manière sécurisée. |
hashlib | Sommes de contrôle en md5, sha1, sha224, sha256, sha384, sha512 | |
hmac | Vérifier authentification d’un message signé crytographiquement | |
Localisation | gettext | Boîte à outil pour fournir votre programme dans plusieurs langues. Ça ne vous dispense pas de traduire, mais ça remplace la traduction par la bonne version pour vous. |
locale | Quelques facilités pour adapter votre programme selon l’origine de votre utilisateur (détection de la région, formatage des chiffres, etc). | |
Types avancés | ||
Manipulation du temps | datetime | Gestion des dates et des durées incluant la comparaison, l’addition, le formatage et le parsing. |
time | Informations sur l’horaire : fuseaux, heure d’hivers, etc. | |
calendar | Permet de répondre à des question existentielles telle que : « 1996 était-elle une année bissextile ? » ou « combien y a-t-il de jour dans le mois suivant si j’avance de 67 jours ?» | |
Références | weakref | Créer une référence faible vers un objet de tel sorte que sa copie n’empêche pas le passage du garbage collector. |
copy | Mécanismes de copie superficielle et de copie complète des objets. L’assignation ne retournant qu’une référence, c’est utile si on veut une vrai copie. | |
Performance | ctypes | Appeler des fonctions C depuis Python. On peut même charger des .dll et des .so. |
heapq | Transforme une liste en un arbre binaire et permet de bénéficier de fort gain de performances sur certains algos de tris. | |
array | Créer des tableaux typés (contrairement aux listes qui peuvent contenir des objets de plusieurs types). Beaucoup plus rapide à manipuler qu’une liste. | |
Collections | collections | Si les listes, tuples, dictionnaires et sets ne suffisent pas, ce module contient des tuples nommés, des dictionnaires ordonnés, des deques et des compteurs optimisés. |
Queue | Une file synchronisée utilisable pour partager des ressources qui vont être accédées de manière concurrente (ex : avec plusieurs threads). | |
pprint | Affiche joliment les listes, les dictionnaires, etc. Très pratique pour débugger. | |
Maths | ||
Calcul | math | Regroupe les fonctions mathématiques les plus courantes : puissance, exponentiel, log, etc. |
cmath | Comme le module math, mais pour les nombres complexes. | |
decimal | Un type spécial qui permet de manipuler des chiffres à virgule sans le problème habituel de l’arrondi en informatique. | |
fractions | Un type spécial qui permet de manipuler des fractions, et non leur résultat. | |
Génération pseudo aléatoire | random | Retourne des nombres « au hasard » selon des bornes ou des répartitions spécifiques. |
uuid | Génère un identifiant garanti d’être unique à travers le monde. Il y a 2 puissance 128 combinaison possibles. | |
Outils de développement | ||
Concurrence | threading | Exécuter du code dans un thread séparé. Permet de ne pas bloquer si fait beaucoup d’I/O (téléchargement, lecture de fichiers, etc). Mais pas de gain sur la vitesse de calcul si on a un processeur à plusieurs cœurs. |
multiprocessing | Exécuter du code dans un processus séparé. Mêmes bénéfices que les threads, en moins léger, mais avec un gain de vitesse sur les calculs si on a un processeur à plusieurs cœur. | |
signal | Envoyer des signaux à son propre programme. Par exemple, interrompre une opération si elle prend trop de temps. | |
Debugging | pdb | Debuggueur intégré à Python |
timeit | Calculer le temps que met un code à s’exécuter | |
trace | Suivre ce que fait un programme, pas à pas | |
Boîte à outils | itertools | Toute sorte de manipulation sur les itérables : chaîner, lire en boucle, dupliquer, lire un morceau sous condition, etc |
functools | Outils pour faciliter la programmation fonctionelles : fonctions partielles, copie de metadata d’une fonction vers une autre, etc | |
operator | Tous les opérateurs (+, %, &, [], >>, …) sous forme de fonction. | |
argparse | Automatise le parsing des arguments passés à votre script. Génère « –help » automatiquement. Gère les sous-commandes et les vérifications essentielles. | |
atexit | Demander à Python d’exécuter une fonction quand il s’arrête. | |
contextlib | Outils pour créer des context managers (ce qui s’utilise avec le mot clé « with »). Permet notamment de créer facilement un context manager à partir d’un simple générateur. | |
sched | Files d’attentes dans laquelle on met à la queue des fonctions à exécuter plus tard. | |
Code | pydoc | Générer automatiquement la documentation depuis votre code |
doctest | Lancer des tests unitaires à partir des exemples écrits dans les docstrings de votre programme. | |
unittest | Le standard pour les tests unitaires en Python | |
2to3 | Automatise la conversion d’un code Python 2 en un code Python 3. Ne fait pas tout le travail, mais fait gagner beaucoup de temps. Un outil inverse existe : 3to2. | |
Introspection | inspect | Permet d’obtenir toutes les meta informations possibles à propos de toutes les objets du programme. Contient notamment des fonctions pour savoir si un objet est un générateur, un module, ou une classe. |
abc | Une implémentation des classes abstraites en Python. Pas vraiment indispensable, mais si vous rencontrez du code qui l’utilise, vous saurez à quoi ça sert. | |
gc | Manipuler le garbage collector. Par exemple vous pouvez le désactiver. | |
warnings | Module principalement importé par les gens qui en ont marre de voir leur console pleine de DeprecationWarning. | |
traceback | A garder sous le coude pour le jour où vous aurez à attraper une erreur, et afficher d’où elle viens dans le code dans votre propre format. | |
__future__ | Facilite la transition vers les version suivantes de Python en autorisant l’import de fonctionnalités optionnelles qui deviendront obligatoires plus tard. Ainsi, from __future__ import print_function permet d’utiliser la fonction print() de Python 3 en Python 2.7. | |
__builtin__ | Contient toutes les fonctions built-in de Python : open, str, list, all, etc. Peut utile, sauf pour se rafraîchir la mémoire ou créer un système d’autocomplétion. | |
Fichiers et dossiers | ||
Système de fichiers | os | Très gros module qui va de la manipulation de chemin et nom de fichiers à la vérification de permissions. |
stat | Contient des fonctions pour analyser les appels de os.stats. Surtout utile pour gagner en performance et éviter de multiples appels si on est intéressé par plusieurs types d’informations sur un fichier. Sinon, utiliser plutôt les fonctions de os autre que os.stat. | |
mimetypes | Deviner le type d’un fichier selon son mimetype déclaré. | |
shutil | Opération en masse sur les fichiers comme supprimer récursivement une arborescence | |
mailcap | Définir qu’il faut ouvrir un programme pour gérer une fichier de tel mimetype est fait à travers à mailcap, que ce module permet de manipuler. | |
glob | Lister les fichiers d’un répertoire en utilisant la syntaxe de filtre d’Unix. Ex : « *.py » va lister tous les fichiers Python. | |
filecmp | Compare des arborescences et permet de traiter leurs différences. | |
tempfile | Créer des dossier et des fichiers temporaires. | |
Contenu de fichiers | linecache | Récupérer un ligne n’importe où dans un fichier, efficacement. |
io | Fournit des objets buffers. Entre autre utile pour cumuler des chaînes de caractères ou manipuler un objet avec l’interface d’un fichier en mémoire vive. | |
mmap | Manipuler un fichier réel comme si il était en mémoire vive, à travers l’interface habituelle des fichiers, ou comme une chaîne de caractères mutable. | |
Persistance | pickle | Sérialiser n’importe quelle structure de données Python. Permet de transformer en texte des objets de toute sorte, et inversement. La version en C du module(cPickle), parfois disponible, est plus rapide. |
shelve | Un dictionnaire, mais qu’on peut sauvegarder sur le disque, et recharger plus tard. | |
sqlite3 | Créer, lire et écrire dans une base de données SQLite, qui est une base de données complète, ACID, supportant presque tout SQL92. | |
Système | ||
Interfaces utilisateur | curses | Créer des interfaces en ligne de commande |
readline | Implémenter un historique ou de l’autocompletion pour une UI en ligne de commande. | |
cmd | Facilite la création d’un shell avec des mots clés en guise de commande | |
webbrowser | Ouvre le navigateur Web par défaut à l’adresse donnée. | |
Tkinter | Interface graphique par défaut fournie avec Python. Assez pauvre et mal intégrée à l’OS. | |
Installation | sys | Informations sur le votre environnement : variable d’environnement, paramètres du script, limite de récursion, chemin d’import, etc |
platform | Tout ce que Python sait sur la machine qu’il l’héberge : OS, version, processeur, etc. | |
sysconfig | Nombreuses informations sur l’installation de Python : flag de compilation, version, dossiers d’installation, etc. | |
Processus | errno | Code d’erreurs utilisés par Python lorsqu’un processus échoue. Utile pour dissocier plusieurs types d’IOError. |
subprocess | Exécuter une programme externe. | |
Formats | ||
Compression | zlib | Lire et écrire le format bzip |
gzip | Lire et écrire le format gzip | |
bz2 | Lire et écrire le format bzip2 | |
zipfile | Lire et écrire des fichiers zip | |
tarfile | Lire et écrire des fichiers tar | |
Langages de balise | sgmllib | Parser du SGML. Le format est surtout utilisé par l’industrie du livre, donc vous le rencontrerez peu. |
htmllib | Parser du HTML. Il est presque toujours mieux d’utiliser une bibliothèque tierce partie pour cela. | |
htmlentitydefs | Une liste de entités HTML pour ISO Latin-1 et des fonctions pour convertir dans un sens et dans l’autre. Résout parfois des problèmes d’encodage épineux. | |
xml.etree.ElementTree | Manipulation d’un fichier XML : analyse, création, export, etc. Sax (lecture rapide) et Dom (création via l’API standard) sont disponibles mais je recommande plutôt ElementTree pour la lecture (ou lxml si vous pouvez l’installer) et un langage de template pour la production. | |
Autres formats | csv | Lire et produire des fichiers CSV. DictReader est particulièrement utile, car il prend en compte les en-tête. Suffisant pour 80 % des cas où l’utilisateur veut un fichier compatible Excel. |
ConfigParser | Lire et écrire les fichiers INI. Principalement utilisé pour la configuration. | |
robotparser | Lire les fichiers robot.txt. | |
json | Transforme du JSON en type natif Python, et inversement. | |
plistlib | Lire les fichiers de configurations binaires de Mac OS. | |
Réseau | ||
J’évite ici volontairement les très nombreux module qui ont pour but de vous permettre d’implémenter votre propre serveur pour le protocole X ou Z. Si vous lisez cet article, vous n’en avez probablement pas besoin. | ||
Communication entre machines | socket | Module de manipulation bas niveau des sockets en Python. À moins de savoir exactement ce que vous faite, je vous conseille plutôt d’utiliser PyZmq ou Twisted. |
asyncore | Boîte à outil fournissant des outils basiques pour la programmation asynchrone en Python. Même remarque que précédement. | |
asynchat | Exemple d’implémentation d’une communication client / serveur avec asyncore. Même remarque que précédemment | |
ssl | Permet de se connecter à un serveur de manière sécurisée en utilisant le chiffrement SSL. | |
Parser et créer des emails. L’email est un format complexe. Ne faites pas ça à la main. Utiliser ce module. | ||
mailbox | Lire et écrire dans différent format de mail box, c’est à dire les formats de stockage des emails par les clients mails tels que mbox. | |
poplib | Se connecter et interagir avec un serveur POP pour lire les mails | |
imaplib | Se connecter et interagir avec un serveur IMAP pour lire les mails | |
smtplib | Se connecter et interagir avec un serveur SMTP pour envoyer des mails. Notez qu’il faut plus qu’un code qui marche pour envoyer des mails du fait des nombreux garde-fous pour limiter le spam. | |
Web | urlparse | Extraire les différentes parties d’une URL |
SimpleHTTPServer | Lancer un petit serveur HTTP. Très pratique pour les tests ou pour partager un fichier sur son réseau local. Ne pas utiliser ça en production. | |
Cookie | Lire et écrire dans le format propre aux cookies. | |
cookielib | Gestion automatique des cookies. A utiliser en conjonction avec urllib et urllib2 pour simuler un utilisateur réel. Vu la complexité de l’interface, installez plutôt mechanize et requests si vous le pouvez. | |
urllib Et urllib2 | Permet de faire des requêtes sur une URL donnée et lire la réponse. Les deux modules se recoupent largement, mais certaines fonctionalités sont disponibles dans l’un ou l’autre. Même remarque concernant la complexité que pour le module précédent. | |
httplib | Bibliothèque de bas niveau pour travailler avec HTTP, et utilisée par urllib. Rarement utile, sauf parfois pour importer une exception. | |
Autres protocoles | ftplib | Créer un client FTP pour envoyer et recevoir des fichiers |
nntplib | Créer un client NNTP pour lire des news sur Usenet | |
telnetlib | Créer un client telnet. Utile pour controler du vieux matiriel à distance, comme certains routeurs. | |
xmlrpclib | Créer un client XMLRCP pour appeler des méthodes d’un objet dans un autre programme. Surtout utilisé dans le monde Java. |
Bonjour,
je vous lit en lurker depuis quelques moi,
j’aime beaucoup de que vous faites.
(la lèche c’est fait)
les libs stantards d’endodage c’est un truc de cul ?
(la correction d’orthographe avec une blague graveleuse c’est fait)
j’ai gagné un tampon ?
Il n’y a pas vraiment de règle pour le tampon.
Contre blague graveleuse, c’est fait.
Wow, sacré boulot ici, mais tout de même, j’aurais une remarque à faire : il manque leur équivalent pour la version 3.x de python. Bon, je chipote, car il suffit tout simplement de cliquer sur les liens que vous avez donnés, pour voir un encadré intitulé “note” pour connaître leur équivalent en version 3.x.
C’est mon avis, mais je pense qu’il est temps de faire la transition vers la 3.x (et suivantes) ; et du coup, cet article aurait pu mettre un sacré coup-de-pouce à l’avancé de la version 3.
Même si je n’ai pas eu le temps de poster un commentaire sur votre article “Dois-je apprendre Python 2 ou Python 3 ?” (http://sametmax.com/dois-je-apprendre-python-2-ou-python-3/), vous faites vous-même la remarque que “Python 2 est plus compliqué que Python 3”, du coup, il aurait plus “efficace” de parler des bibliothèques de la version 3.
En tout cas, merci, ça va m’être bien utile. ;-)
On fait que du 2.7 sur le blog. On fera du 3 quand on codera en 3. Pas avant une bonne année à mon avis.
N’oublions pas que la sagesse populaire nous répète que c’est dans les vieilles casseroles qu’on fait les meilleures soupes.
Ah non, c’est dans les vieux pots, pas dans les vieilles casseroles.
Si tu dis autre chose que “vieux pots”, on ne peut plus faire le super jeu de mots :
“C’est dans les vieilles peaux qu’on fait les meilleurs soupes”
(un gérontophile)
Hello les loulous.
Je découvre cet article en rebondissant de liens en liens dans votre blog, quelle mine d’info !
Vous décrivez Tkinter comme une « interface graphique par défaut fournie avec Python. Assez pauvre et mal intégrée à l’OS. ».
C’est ce que je pensais aussi jusqu’à ce que je découvre ce site :
http://www.tkdocs.com/
Qui donne de bons conseils, et qui met surtout plein de captures d’écran pour Linux, Windows et MacOS X. Et le résultat n’est pas si vilain que ça (en fait, sous Mac et Windows, c’est même quasiment du natif !)
Cheers,
C’est vrai qu’il y a eu de l’améloiration, il va falloir que je refasse des tests.