Maison > développement back-end > Tutoriel Python > Comment puis-je exécuter des commandes Shell et capturer leur sortie en Python ?

Comment puis-je exécuter des commandes Shell et capturer leur sortie en Python ?

Linda Hamilton
Libérer: 2024-12-25 20:11:23
original
466 Les gens l'ont consulté

How Can I Run Shell Commands and Capture Their Output in Python?

Exécuter des commandes Shell et capturer la sortie

La tâche d'exécution de commandes Shell par programme et de capture de leur sortie sous forme de chaîne peut être accomplie à l'aide du module de sous-processus de Python.

Fonction check_output (Python 2.7 et supérieur)

Pour le plus simple approche dans les versions Python officiellement maintenues, utilisez la fonction check_output :

import subprocess

output = subprocess.check_output(['ls', '-l'])
print(output) # Output: b'total 0\n-rw-r--r--  1 memyself  staff  0 Mar 14 11:04 files\n'
Copier après la connexion

fonction run (Python 3.5 et versions ultérieures)

Dans Python 3.5, la fonction run offre une approche plus flexible et moderne :

import subprocess

result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8')) # Output: 'total 0\n-rw-r--r--  1 memyself  staff  0 Mar 14 11:04 files\n'
Copier après la connexion

Popen Constructor (Toutes les versions)

Pour une compatibilité étendue et des fonctionnalités avancées, utilisez le constructeur Popen de bas niveau. Avec communicate, vous pouvez capturer la sortie et transmettre l'entrée :

import subprocess

p = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE)
output, _ = p.communicate()
print(output) # Output: b'.\n..\nfoo\n'
Copier après la connexion

Notes

Exécution de commande Shell (shell=True Argument)

Par défaut , les fonctions exécutent des programmes uniques. Pour exécuter des commandes shell complexes, définissez shell=True. Cependant, cela soulève des problèmes de sécurité.

Gestion des entrées

Pour transmettre une entrée via stdin, spécifiez l'argument du mot-clé d'entrée dans run ou Popen.

Gestion des erreurs

Pour une gestion appropriée des erreurs, utilisez check_output avec stdout=subprocess.STDOUT ou Popen avec stderr=subprocess.STDOUT. Vous pouvez également vérifier le code de retour du sous-processus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal