Maison >développement back-end >Tutoriel Python >Comment canaliser correctement les commandes à l'aide du module « subprocess » de Python ?

Comment canaliser correctement les commandes à l'aide du module « subprocess » de Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-18 06:55:15374parcourir

How to Properly Pipe Commands Using Python's `subprocess` Module?

Comment utiliser les tuyaux avec la commande de sous-processus

Lorsque vous travaillez avec le module de sous-processus, il peut y avoir des scénarios dans lesquels vous devez utiliser des tuyaux pour connecter plusieurs commandes. Cette question explore le défi de l'utilisation de subprocess.check_output() avec la commande suivante :

ps -A | grep 'process_name'

Answer

Pour utiliser un tube avec un sous-processus, le shell=True un argument peut être utilisé. Cependant, l'utilisation de shell=True pose des problèmes de sécurité et doit être abordée avec prudence. Une meilleure approche consiste à créer les processus ps et grep séparément et à rediriger la sortie de l'un vers l'autre :

ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)
ps.wait()

Dans le scénario spécifique mentionné, une solution plus simple serait d'invoquer subprocess.check_output(('ps ', '-A')) et utilisez str.find sur la sortie.

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