Maison > développement back-end > Tutoriel Python > Comment puis-je récupérer la sortie d'un sous-processus en Python ?

Comment puis-je récupérer la sortie d'un sous-processus en Python ?

Susan Sarandon
Libérer: 2024-11-28 17:40:15
original
866 Les gens l'ont consulté

How Can I Retrieve the Output of a Subprocess in Python?

Récupération de la sortie des sous-processus

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.

Surmonter le défi de récupération de sortie

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(...)
Copier après la connexion

Cette erreur se produit car les objets StringIO ne disposent pas de la méthode fileno() requise par subprocess.call().

La solution : subprocess.check_output()

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)
Copier après la connexion

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.

Explications supplémentaires et cas d'utilisation

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!

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