Sam & Max » lib http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Qu’est-ce que la bibliothèque standard Python ? 4 http://sametmax.com/quest-ce-que-la-bibliotheque-standard-python/ http://sametmax.com/quest-ce-que-la-bibliotheque-standard-python/#comments Mon, 19 May 2014 09:36:16 +0000 http://sametmax.com/?p=10288 La lib standard ou stdlib, on vous en parle partout. Ce tuto vous explique comment faire telle tâche avec la lib standard. Ce README dit qu’il n’y a que la lib standard comme dépendance, c’est génial ! Cet article voudrait que le code X soit intégré dans la lib standard.

Mais au fait, c’est quoi la lib standard ?

Et bien c’est tout simplement l’ensemble du code qui est disponible si vous avez Python installé sur votre machine. Si un module fait partie de la bibliothèque standard, vous êtes certain que votre programme Python peut toujours l’utiliser : il n’y a rien à installer.

Cette lib standard est également intégralement documentée sur le site de Python, si bien que si vous téléchargez la doc hors ligne, vous pouvez quasiment dev en totale autonomie. En effet, même si le principe de la lib standard est le même pour tous les langages, en Python, elle est particulièrement intéressante car vraiment énorme. Et en plus vous avez le dump de notre blog :)

Le code de la lib standard évolue lentement, contrairement aux libs tierces parties, car elles sont soumises à des règles strictes et la revue de la communauté à travers des documents officiels : les PEP. Le PEP le plus célèbre étant le PEP 8, qui décrit le style recommandé pour du code Python.

De fait le code de la lib standard est un code fiable, sans surprise, mais qui proposera rarement les dernières innovations. Pour reprendre les mots de Guido :

Le code de la stdlib a un pied dans la tombe.

Car Python garanti la compatibilité ascendante de TOUTE la lib standard pour une version majeure. Ce qui veut dire que si vous utilisez un module de la stdlib écrit pour Python 2.5, il marchera en Python 2.7, et un module pour 3.1 marchera pour la 3.4.

Mais ça veut dire aussi que le module pourrira ici quand plus personne ne l’utilisera. La preuve en est getopt, qui a été remplacé par optparse, qui a été remplacé par argparse. Deux générations de libs plus tard, getopt est toujours importable en 2.7, bien que plus personne ne s’en serve, pour garantir cette compatibilité. Et en fait, on peut dire 5 générations, car nous-même utilisons docopt après prôné clize. Le monde de l’IT est comique.

Certains systèmes ébrèchent le principe de la lib standard, comme Ubuntu, qui package la lib TK séparément, et donc oblige à installer le paquet python-tk pour avoir le module tkinter, normalement inclus dans la lib standard. Ce comportement est heureusement assez rare.

]]>
http://sametmax.com/quest-ce-que-la-bibliotheque-standard-python/feed/ 4
(Très) Grand listing des libs standards les plus utiles en Python 8 http://sametmax.com/tres-grand-listing-des-libs-standard-partie-les-plus-utiles-en-python/ http://sametmax.com/tres-grand-listing-des-libs-standard-partie-les-plus-utiles-en-python/#comments Mon, 10 Dec 2012 02:49:22 +0000 http://sametmax.com/?p=3575 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.
Email email 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.
]]>
http://sametmax.com/tres-grand-listing-des-libs-standard-partie-les-plus-utiles-en-python/feed/ 8