1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| # -*- coding:utf-8 -*-
import sys
from subprocess import Popen, PIPE
# les commandes/exécutables à piper
commandes = sys.argv[1:]
# initialisation de la liste des sous-processes avec la 1ere commande
# (on ne s'occupe que de la sortie standard)
subprocesses = [ Popen(commandes[0],shell=True,stdout=PIPE) ]
# Pour les commandes suivantes, exceptée la dernière, on branche l'entrée
# standard sur la sortie standard de la commande précédente et la sortie
# standard est "dirigée" vers subprocess.PIPE
for cmd in commandes[1:-1]:
last_stdout = subprocesses[-1].stdout.fileno()
sub = Popen(cmd,shell=True,stdin=last_stdout,stdout=PIPE)
subprocesses.append(sub)
# pour la dernière commande, seule l'entrée standard est re-branchée
last_stdout = subprocesses[-1].stdout.fileno()
subprocesses.append(Popen(commandes[-1],shell=True,stdin=last_stdout))
# j'attends la fin de la dernière commande
subprocesses[-1].wait() |
Partager