Lors de l'appel de sous-processus à l'aide de subprocess.call(), il peut être difficile d'accéder à la sortie générée par le processus appelé. Cet article aborde ce problème et propose une solution.
Traditionnellement, tenter de capturer la sortie à l'aide d'un objet StringIO.StringIO, comme indiqué ci-dessous, entraînerait une erreur :
import StringIO ... stdout = StringIO.StringIO() ... subprocess.call(...)
Cette erreur se produit car les objets StringIO ne disposent pas de la méthode fileno() requise par subprocess.call().
Pour contourner cette limitation, Python 2.7 et les versions ultérieures ont introduit la fonction subprocess.check_output. Cette fonction capture efficacement la sortie standard d'un sous-processus et la renvoie sous forme de chaîne.
Voici un exemple simple démontrant l'utilisation de subprocess.check_output() sous Linux :
import subprocess output = subprocess.check_output(["ping", "-c", "1", "8.8.8.8"]) print(output)
Notez que la commande Linux ping utilise "-c" pour spécifier le nombre de paquets à envoyer, tandis que Windows utilise "-n" pour le même objectif.
Pour une explication détaillée et des cas d'utilisation supplémentaires, reportez-vous à la réponse Stack Overflow suivante :
[Comment exécuter une commande et obtenez la sortie Python ?](https://stackoverflow.com/questions/1365265/how-to-run-a-command-and-get-the-output-in-python)
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!