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
Libérer: 2024-12-18 06:55:15
original
396 Les gens l'ont consulté

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

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

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 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