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!