Maison > développement back-end > Tutoriel Python > Comment transmettre des chaînes à « subprocess.Popen » et « subprocess.run » en Python ?

Comment transmettre des chaînes à « subprocess.Popen » et « subprocess.run » en Python ?

Mary-Kate Olsen
Libérer: 2024-12-06 07:50:11
original
1065 Les gens l'ont consulté

How to Pass Strings to `subprocess.Popen` and `subprocess.run` in Python?

Passer des chaînes à subprocess.Popen via stdin

Afin de passer une chaîne à subprocess.Popen, il est essentiel de spécifier stdin= PIPE dans l’appel de fonction. Cela permet à l'attribut stdin de l'objet Popen d'être un objet de type fichier pouvant recevoir des données d'une chaîne.

Pour démontrer cela, l'exemple suivant pourrait être implémenté :

from subprocess import Popen, PIPE, STDOUT

p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)    
grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0]
print(grep_stdout.decode())
# -> four
# -> five
# ->
Copier après la connexion

En fournissant stdin=PIPE, la chaîne d'entrée peut être transmise au processus grep via stdin.communicate(), permettant le traitement des données d'entrée et la récupération des données de la commande. sortie.

Python 3.5 et les versions ultérieures fournissent la fonction subprocess.run, qui simplifie le processus de transmission de chaînes aux commandes externes et de récupération de leurs sorties. Cela peut être illustré comme suit :

#!/usr/bin/env python3
from subprocess import run, PIPE

p = run(['grep', 'f'], stdout=PIPE,
        input='one\ntwo\nthree\nfour\nfive\nsix\n', encoding='ascii')
print(p.returncode)
# -> 0
print(p.stdout)
# -> four
# -> five
# -> 
Copier après la connexion

En utilisant subprocess.run, la chaîne d'entrée peut être directement transmise comme argument au paramètre d'entrée, ce qui rend la communication des données plus simple.

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