Qu’est-ce que le module OS de Python et comment l’utilisez-vous?
Le module OS en Python donne accès à des fonctions spécifiques au système pour gérer le système de fichiers, les processus, le planificateur, etc. Vous devez maîtriser le système d'exploitation Python pour écrire des applications qui traitent des problèmes du monde réel. Ce guide présente certains des concepts de base et illustre comment utiliser la commande système Python.
Caractéristiques du système d'exploitation Python
Le système d'exploitation sert de moyen portable d'interagir avec le système d'exploitation sous-jacent. Il offre un accès aux noms de fichiers, aux arguments de ligne de commande, aux variables d'environnement, aux paramètres de processus et à la hiérarchie du système de fichiers avec d'autres fonctionnalités.
Ce module contient également deux sous-modules, le module os.sys et le module os.path. Vous pouvez utiliser les fonctions fournies par le module OS pour effectuer un large éventail de tâches. Certaines utilisations courantes incluent l'exécution de commandes shell, la gestion de fichiers et de répertoires, la génération de processus , etc.
Premiers pas avec le module OS
La manière la plus simple d'explorer le module OS est d'utiliser l'interpréteur. Vous pouvez y importer le module et utiliser les fonctions système sans écrire de code source. Vous devez cependant installer Python pour cela. Alors allez-y et installez Python sur votre machine locale.
Démarrez l'interpréteur en tapant python dans votre terminal ou votre shell de commande. Une fois ouvert, importez le module OS en utilisant l'instruction suivante.
>>> import os
Vous pouvez désormais accéder aux fonctionnalités fournies par le module OS, y compris la commande système Python. Par exemple, vous pouvez déterminer la plate-forme système à l'aide de la commande name . L'exemple ci-dessous montre comment appeler les commandes système exposées par le module OS.
>>> os.name
Cette fonction vérifie si certains modules spécifiques au système d'exploitation sont présents et détermine la plate-forme en fonction de cela. Utilisez la fonction uname pour obtenir des informations détaillées.
>>> os.uname()
Cette commande affiche la plate-forme système exacte avec les informations sur l'architecture, la version et la version de la machine. Utilisez la fonction getcwd pour récupérer le répertoire de travail actuel.
>>> os.getcwd()
Vous pouvez facilement modifier le répertoire de travail à l'aide de la commande système Python chdir . Transmettez le nouvel emplacement en tant que paramètre de chaîne.
>>> os.chdir('/tmp')
La fonction mkdir du module OS facilite la création de nouveaux répertoires. Cela nous permet également de créer des dossiers récursifs, ce qui signifie que Python créera tous les répertoires manquants qui sont les parents du répertoire feuille.
>>> os.mkdir('new-dir')
Utilisez la commande rmdir pour supprimer des répertoires de votre répertoire de travail.
>>> os.rmdir('new-dir')
Exemples de commande système Python
La commande système fournie par le module OS permet aux programmeurs d'exécuter des commandes shell. Assurez-vous de définir le nom de la commande sous forme de chaîne. Une fois que vous avez appelé la commande système python, elle exécutera la commande donnée dans un nouveau sous-shell.
>>> cmd = 'date'
>>> os.system(cmd)
Vous pouvez exécuter d'autres applications autonomes en utilisant cette même méthode. L'exemple suivant exécute l' éditeur de terminal nano à partir de votre shell Python.
>>> cmd = 'nano'
>>> os.system(cmd)
Le système Python OS génère également le code de retour pour chaque commande en cours d'exécution. Les systèmes POSIX renvoient 0 pour une exécution réussie et des valeurs différentes de zéro pour indiquer les problèmes.
Vous pouvez utiliser le système d'exploitation en Python pour exécuter tout ce que vous voulez. Par exemple, si votre programme a besoin de lire les informations de version d'un programme sur la machine utilisateur, vous pouvez faire quelque chose comme ce qui suit.
>>> cmd = 'gcc --version'
>>> os.system(cmd)
L'exemple ci-dessous exécute une simple commande shell qui crée un nouveau fichier appelé users.txt et le remplit avec tous les utilisateurs connectés. De nombreux programmes Python font ces choses.
>>> os.system('users > test')
Nous transmettons le nom de la commande au système d'exploitation sous forme de chaîne. Vous pouvez utiliser tous les types de commandes de terminal utiles de la même manière.
>>> os.system('ping -c 3 google.com')
Vous pouvez également utiliser des appels de sous – processus pour exécuter des commandes système à partir de Python. Cela offre plusieurs avantages supplémentaires, notamment une exécution plus rapide, une meilleure gestion des erreurs, une analyse de sortie et des commandes shell de canalisation. La documentation officielle de Python recommande également l'appel de sous-processus sur des modules plus anciens tels que os.system et os.spawn .
>>> import subprocess
>>> subprocess.run(["ping","-c 3", "example.com"])
Gestion des fichiers et des répertoires via le module OS
Nous avons montré comment créer des fichiers et des répertoires simples à l'aide du module Python OS. Que faire si vous souhaitez créer des dossiers imbriqués? Le système d'exploitation s'en charge également pour nous, les programmeurs. Par exemple, les extraits ci-dessous créent le dossier $ HOME / test / root / api . Il créera également les répertoires parents nécessaires s'ils ne sont pas disponibles.
>>> dirname = os.path.join(os.environ['HOME'], 'test', 'root', 'api')
>>> print(dirname)
>>> os.makedirs(dirname)
Tout d'abord, nous avons récupéré le répertoire de base en utilisant environ , puis nous avons joint les noms de dossier via os.path.join . L'instruction print affiche le nom du dossier et makedirs le crée.
Nous pouvons afficher le nouveau répertoire en utilisant la méthode listdir du module OS.
>>> os.chdir(os.path.join(os.environ['HOME'], 'test', 'root', 'api'))
>>> os.system('touch file1 file2 file3')
>>> os.listdir(os.environ['HOME'])
Vous pouvez facilement renommer le répertoire api à l'aide de la commande renommer proposée par le module OS. L'instruction ci-dessous renomme ce répertoire api en test-api.
>>> os.rename('api', 'test-api')
Utilisez les fonctions isfile et isdir du système d'exploitation si votre programme a besoin de valider des fichiers ou des répertoires spécifiques.
>>> os.path.isfile('file1')
>>> os.path.isdir('file1')
Le module OS en Python permet également aux développeurs d'extraire les noms de fichiers et de dossiers avec les extensions de fichiers. Les extraits ci-dessous illustrent l'utilisation de os.path.split et os.path.splitext à cet égard.
>>> dir = os.path.join(os.environ['HOME'], 'test', 'root', 'api', 'file1.txt')
>>> dirname, basename = os.path.split(dir)
>>> print(dirname)
>>> print(basename)
Utilisez le code ci-dessous pour extraire des extensions comme .txt ou .mp3 des noms de fichiers.
>>> filename, extension = os.path.splitext(basename)
>>> print(filename)
>>> print(extension)
Utilisation diverse du système d'exploitation Python
Le module OS offre de nombreuses fonctions supplémentaires pour manipuler des éléments tels que les processus utilisateur et le planificateur de travaux. Par exemple, vous pouvez obtenir rapidement l'UID (user id) du processus en cours à l'aide de la fonction getuid .
>>> os.getuid()
>>> os.getgid()
La fonction getgid renvoie l'ID de groupe du processus en cours d'exécution. Utilisez getpid pour obtenir le PID (identifiant du processus) et getppid pour obtenir l'identifiant du processus parent.
>>> os.getpid()
>>> os.getppid()
Vous pouvez également utiliser le module OS pour modifier les autorisations des fichiers et des répertoires à partir de votre programme Python. Utilisez la fonction chmod du système d'exploitation pour ce faire.
>>> os.chmod('file1.txt', 0o444)
Cette commande change l'autorisation de file1.txt en 0444 . Utilisez 0o444 au lieu de 0444 pour vous assurer que l'instruction est compatible avec les deux versions principales de Python.
Exploitez la puissance du système d'exploitation Python
Le module OS de Python fournit tout ce dont vous avez besoin pour interagir avec le système d'exploitation sous-jacent. Une compréhension claire du système d'exploitation est nécessaire pour écrire des programmes véritablement multiplateformes. Nous avons couvert certaines des fonctionnalités de base fournies par ce module pour vous aider à démarrer. Essayez-les à votre rythme et n'oubliez pas de les bricoler.