Conception — Python
Python est un langage de script Open Source très largement utilisé dans le monde du calcul scientifique et numérique pour sa puissance et sa simplicité.
Les packages et librairies tiers disponibles avec Python sont très nombreux et couvrent tous les domaines d’un système d’informations (réseau, bases de données, time series, noSQL…).
Python, matplotlib. Installation dans un environnement virtuel avec redirection X11 7 juin 2021
Sur Ubuntu, un script Python 3 exécutant Matplotlib pour afficher un graphique avec redirection X11 échoue.
Matplotlib a besoin d’un backend graphique. La distribution Python doit être reconfigurée afin de pouvoir utiliser le module tkinter qui interagit avec les fonctionnalités graphiques de Tcl/Tk.
Python - Comprendre args, kwargs dans les fonctions 8 janvier 2021
En débutant en Python, on rencontre des exemples de code avec les syntaxes
*args
, **kwargs
en arguments de fonctions.
Habitué à d’autres langages, premier réflexe : c’est quoi ça ? des pointeurs en Python ?
*args
et **kwargs
permettent de passer de multiples arguments et des arguments nommés à une fonction. Rien de bien sorcier. Dans cet article, *args
et **kwargs
expliqués à travers des exemples simples, et par la même occasion, un mot rapide sur les opérateurs * et **. Python - Guide pratique, aide-mémoire 7 janvier 2021
Un aide mémoire Python sur quelques packages, aide mémoire à compléter au fil du temps :
- Traitement des données JSON
- Arguments des programmes (argparse)
- Fichiers ini (configparser), fichiers yaml (PyYAML)
- Requêtes HTTP (packages requests et httplib2) …
Python, configuration applicative - variables d’environnement, fichiers ini et YAML 24 avril 2020
Bien entendu, aucune configuration applicative codée en dur dans des programmes, programmes Python ou non.
Comment lire (écrire) des données de configuration avec Python à partir de variables d’environnement, de fichiers INI ou de fichiers YAML ?
Les packages os, configparser et PyYAML répondent très simplement à ces besoins. configparser pour les fichiers INI et yaml pour les fichiers YAML ont leurs avantages et inconvénients si on se hasarde à les comparer pour faire un choix. Le format JSON n’est pas abordé ici, il fait l’objet d’une publication dédiée.
Python, manipuler les dictionnaires avec la notation dot 20 avril 2020
Python n’est pas Javascript. Habitudes, difficile de les éradiquer.
Comment utiliser la notation dot avec Python sur un dictionnaire ? Cela peut être réalisé nativement avec une classe ou SimpleNamespace mais quand les dictionnaires sont imbriqués, cela devient fastidieux sans avoir à développer sa propre bibliothèque.
Des packages de la communauté Python existent pour faire le job : Prodict, python-box.
Python, gestion des requêtes HTTP avec les packages requests et httplib2 17 avril 2020
Dans les échanges entre applications via des API, des requêtes HTTP avec la méthode GET ou POST sont de plus en plus utilisées.
Avec Python, 2 packages très intéressants pour exécuter des requêtes HTTP : requests et httplib2. Le package requests est le plus simple syntaxiquement et intègre en natif un décodeur JSON, quant au package httplib2, une fonctionnalité très intéressante : la mise en cache pour éviter les appels réseaux non nécessaires dans certains contextes applicatifs avec des données relativement statiques.
Python, parsing des arguments avec les packages argparse and getopt 15 avril 2020
2 packages natifs sont disponibles avec Python pour gérer efficacement les lignes de commandes et arguments d’un programme Python : argparse et getopt.
argparse est de loin le package le plus évolué et offre le plus de productivité, quant à getopt une ressemblance très forte à ses habitudes de gestion des arguments en shell ou en C.
Python, lire et écrire des données JSON avec le package natif json 13 avril 2020
Une des premières choses à savoir quand on aborde le langage Python dans le contexte technologique actuel (échange de données, API…) : comment lire et écrire des données JSON dans un programme Python ?
Python intègre le package json en natif pour ces opérations avec les méthodes load, loads, dump et dumps. Si on vient du monde Javascript, quelques habitudes de programmation avec les données Json non utilisables directement en Python (dot notation…).
Python - Comprendre et démystifier virtualenv 24 janvier 2020
Avec Python, lors de l’installation d’un produit, beaucoup de dépendances peuvent être aussi installées.
Il devient fastidieux de gérer la pollution de la distribution globale Python: dépendances, conflits de versions de packages, binaires…
Les packages utilisés par la plupart des utilisateurs peuvent être installés dans la distribution système et les packages nécessaires à un seul utilisateur/produit dans un environnement virtuel avec virtualenv.
Comment créer et utiliser des environnements virtuels avec virtualenv ? Comment les packages et versions sont gérés dans les distributions virtuelles et système ? C’est le sujet de cet article.
Migration automatisée d’un site Web (HTML, PHP, CSS, JS…) de l’encodage ISO-8859-1 vers l’Unicode UTF-8 avec Python 3 22 septembre 2016
Un site Web en entier (fichiers html, php, css, javascript…) à migrer de l’encodage Latin 1 / ISO-8859-1 vers l’Unicode UTF-8 car au fil de l’évolution des technologies (PHP 5.4 et versions supérieures, services de partage AddThis…), des incompatibilités surgissent.
Mais comment automatiser celle-ci quand plus de 500 fichiers sont concernés ?
Le langage Python et son package io sont capables en quelques lignes d’automatiser la migration d’un site en entier vers UTF-8, programme python qui est proposé dans cet article. Le package chardet de Python est bien capable de détecter les encodages de fichiers toutefois il est plus fiable d’utiliser la commande file et de donner ses résultats au programme Python en charge de la migration. Dans un environnement Windows de développement, aucun souci pour utiliser la commande file, la plateforme légère MinGW (Minimalist GNU for Windows) propose tous les utilitaires indispensables dont l’utilitaire file.
Après la migration des fichiers, quelques opérations post migration sont nécessaires, comme le remplacement dans les balises meta des pages HTML de l’encodage ISO-8859-1 par UTF-8, ce qui peut être également automatisé par un script shell sous MingW. La modification de l’encodage vers UTF-8 doit éventuellement être réalisée au niveau global pour PHP et les connexions aux bases de données (MySQL dans ce cas pratique).