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

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