Maison >développement back-end >Tutoriel Python >Comment puis-je supprimer la sortie détaillée des sous-processus en Python ?

Comment puis-je supprimer la sortie détaillée des sous-processus en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 00:33:111017parcourir

How Can I Suppress Verbose Output from Subprocesses in Python?

Étouffement des sorties excessives des sous-processus

De nombreux outils de ligne de commande, tels qu'eSpeak, affichent une sortie détaillée ainsi que les actions prévues. Cela peut encombrer le shell, rendant difficile la lecture de la sortie précédente ou l'interaction avec l'invite.

Pour les scripts Python qui appellent de tels outils à l'aide du module de sous-processus, la désactivation de leur sortie peut améliorer la lisibilité et la convivialité. Une méthode efficace consiste à rediriger la sortie standard (STDOUT) et l'erreur standard (STDERR) vers un périphérique nul.

Redirection de la sortie pour Python 3.3

Pour les versions 3.3 et supérieures de Python, le module de sous-processus fournit la constante DEVNULL en tant que périphérique nul. En passant DEVNULL aux arguments stdout et stderr de subprocess.call(), la sortie du sous-processus est effectivement supprimée.

import subprocess

subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)

Redirection de la sortie pour Python 2 et inférieur

Dans les versions antérieures de Python, y compris 2.7, la constante DEVNULL n'est pas disponible. Au lieu de cela, on peut ouvrir manuellement un périphérique nul et y rediriger.

import os

FNULL = open(os.devnull, 'w')
subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)

Équivalent de script Shell

L'équivalent en ligne de commande du code Python ci-dessus est :

retcode = os.system("echo 'foo' >& /dev/null")

En utilisant ces techniques, vous pouvez faire taire la sortie détaillée des sous-processus de vos scripts Python, en gardant le shell propre et en améliorant la lisibilité pour une interaction ultérieure.

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:
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