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
Libérer: 2024-12-16 04:42:16
original
390 Les gens l'ont consulté

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

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

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

Cette technique reflète efficacement la commande shell suivante :

retcode = os.system("echo 'foo' > /dev/null")
Copier après la connexion

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