Dans le domaine de la programmation Python, il est souvent nécessaire d'exécuter des commandes ou des processus externes à partir de scripts Python. Le module de sous-processus fournit un mécanisme puissant à cet effet, permettant aux programmes Python d'interagir avec le système d'exploitation et d'exécuter des commandes de manière contrôlée.
Un défi courant rencontré lors de l'utilisation d'un sous-processus est la possibilité que la commande exécutée génère sortie indésirable, qui peut encombrer le terminal ou l'affichage de la sortie et interférer avec la lisibilité de la propre sortie du script. Ceci est particulièrement répandu lors de l'utilisation de commandes qui fournissent des messages de diagnostic ou des mises à jour d'état détaillées.
Si vous utilisez Python version 3.3 ou ultérieure, la désactivation de la sortie du sous-processus devient un problème. tâche simple grâce à l’introduction de la constante DEVNULL. Cette constante représente un objet de type fichier qui supprime toutes les données qui y sont écrites, redirigeant efficacement la sortie vers nulle part.
Pour utiliser DEVNULL et supprimer la sortie du sous-processus, redirigez-y simplement les flux stdout et stderr :
import subprocess retcode = subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
Cette approche garantit que la sortie standard et les flux d'erreurs standard du sous-processus sont dirigés vers le périphérique DEVNULL, empêchant ainsi tout message indésirable d'atteindre le terminal.
Pour les versions de Python antérieures à 3.3, y compris Python 2.7, largement utilisé, la désactivation de la sortie du sous-processus nécessite une procédure légèrement différente approche. Python 2.7 ne dispose pas de la constante DEVNULL, nous devons donc ouvrir manuellement le fichier /dev/null et y rediriger la sortie.
Voici comment y parvenir dans Python 2.7 :
import os import subprocess FNULL = open(os.devnull, 'w') retcode = subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
En ouvrant le fichier /dev/null (représentant le périphérique nul, qui supprime toutes les données qui y sont écrites) et en le passant comme arguments stdout et stderr à subprocess.call(), nous redirigeons efficacement toutes les sorties des sous-processus vers le vide, garantissant ainsi un terminal propre et épuré.
Pour Pour être complet, il convient de mentionner une approche alternative qui consiste à rediriger la sortie à l'aide d'une commande shell. Bien que cette méthode soit moins portable et généralement déconseillée pour une utilisation dans les scripts Python, elle peut être utile dans certains scénarios :
retcode = os.system("echo 'foo' > /dev/null")
Cette approche exécute directement une commande shell, redirigeant la sortie de la commande echo vers /dev/null à l'aide de l'opérateur >.
Quelle que soit l'approche que vous choisissez, la méthode courante L'objectif est de supprimer les sorties inutiles des sous-processus et de maintenir un affichage de sortie propre et lisible. En utilisant ces techniques, vous pouvez masquer efficacement les résultats des sous-processus et garantir que seules les informations souhaitées sont présentées à l'utilisateur.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3