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
917 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!

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