Maison >développement back-end >Tutoriel Python >Comment puis-je supprimer les sorties indésirables des sous-processus en Python ?

Comment puis-je supprimer les sorties indésirables des sous-processus en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 04:42:16391parcourir

How Can I Suppress Unwanted Output from Subprocesses in Python?

Suppression de la sortie des sous-processus en Python

En Python, les sous-processus peuvent être utilisés pour exécuter diverses commandes système. Bien que de tels sous-processus puissent fournir les fonctionnalités nécessaires, leur verbosité inhérente peut encombrer la sortie et nuire à la lisibilité. En particulier, considérons l'exemple fourni par l'utilisateur :

import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])

Dans ce cas, eSpeak génère la sortie audio souhaitée mais produit également des messages d'erreur indésirables. Cet encombrement de la coque peut rendre difficile l'accès ou l'interprétation du texte imprimé. Malheureusement, il n'existe aucune option documentée pour désactiver la verbosité d'eSpeak.

Pour résoudre ce problème, Python propose une solution pratique pour supprimer la sortie des sous-processus, permettant aux utilisateurs de conserver un shell propre et sans encombrement :

Solution :

Rediriger la sortie du sous-processus vers DEVNULL à l'aide du code suivant pour Python >= 3.3 :

import os
import subprocess

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

Pour les versions Python inférieures à 3.3, y compris 2.7, utilisez le code ci-dessous :

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

Cette technique reflète efficacement la commande shell suivante :

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

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