Programmation système en Python
Modules
Un module est un fichier Python contenant des fonctions et des constantes.
import <module>:sys.pathest parcouru pour trouver un fichier de nom<module>.py, ce module est chargé, puis compilé en bytecode, puis exécuté. L’exécution du code peut être invisible (définition de classes, de fonctions), ou pas__name__: nom du fichier/module courant ; vaut__main__s’il est exécuté en tant que module principal__file__: chemin absolu vers le fichier/module courant. Utile dansos.path.join(os.path.dirname(__file__), 'file.local')python -m <module_name>: équivalent à l’exécution deimport <module_name>(= chargement + exécution)python -m pip: pippython -m venv: virtualenvpython -m http.server: serveur http pour fichiers statiques
Packages
Un package est un ensemble de modules organisé hiérarchiquement. C’est un répertoire, qui contient un fichier __init.py__ pour le distinguer d’un simple répertoire contenant des fichiers python.
from <package> import <module>import <package>.<module>
Scripts
- shebang à mettre en en-tête des scripts :
#!/usr/bin/env python; la commandepythonest alors cherchée dans le$PATHde l’utilisateur - ajouter aussi :
# -*- coding: utf-8 -*-pour éviter les problèmes d’encodage de caractères
Module os
Environnement
os.name: nom du système d’exploitation, parmiposix(Linux, MacOS, BSD), ‘nt’ (Windows), ‘java’ (Android)os.uname(): renvoit un objet avec 5 attributs d’infos détaillées sur l’OSos.environ: mapping de toutes les variables d’environnement (au moment de l’import)os.getenv(<varname>, <default>: donne la valeur d’une variable d’environnement, avec une valeur par défault si elle n’existe pas
Système de fichiers
os.getcwd(): renvoie le chemin d’accès courantos.walk(DIR): générateur qui parcours récursivement les fichiers et répertoires deDIR; à chaque répertoire (y comprisDIR) un triplet(dirpath, dirnames, filenames)est généréos.remove(FILEPATH): supprime le fichier de chemin d’accèsFILEPATHos.rmdir(DIRPATH): supprime le répertoire (qui doit être vide) de chemin d’accèsDIRPATH
os.path
os.path.join(PATH1, PATH2): renvoie un chemin d’accès, concaténation dePATH1etPATH2os.path.exists(PATH): renvoie True s’il existe un fichier ou un répertoire de chemin d’accèsPATHos.path.getsize(FILEPATH): renvoie la taille en octet du fichierFILEPATHos.path.samefile(PATH1, PATH2): True si les deux chemins d’accès font référence au même fichier (même i-node)
Module sys
sys.path: liste des répertoires ou des .zip où python cherche les modules. Cette liste est augmenté des répertoires de la variable d’env.PYTHONPATHsi celle-ci est définiesys.modules: dictionnaire de tous les modules chargéssys.argv: liste des arguments lors d’une exécution en ligne de commandesys.version_info: 5-uple qui décrit la version de l’interpréteur Python utilisé. Les deux premiers sont les numéros de version major et minor, par exemple 2 & 7, ou 3 & 6
Module urllib.parse (package urllib)
urllib.parse.urlsplit(url): décompose une url en ses constituants(addressing scheme, network location, path, query, fragment identifier)urllib.parse.urlunsplit(parts): opération inverse deurlspliturllib.parse.join(base, url): construit une url absolue en combinant une urlbaseavec une autre urlurl. Siurlest incomplète, ses éléments manquants sont pris dansbase.
