J'ai actuellement une commande Bash en cours d'exécution (via subprocess.Popen
de Python) qui lit à partir de stdin
, en faisant quelque chose et en produisant stdout
. Quelque chose le long des lignes de:Comment rediriger stdin/stdout lorsque j'ai une séquence de commandes dans Bash?
pid = subprocess.Popen(["-c", "cmd1 | cmd2"],
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
shell =True)
output_data = pid.communicate("input data\n")
Maintenant, ce que je veux faire est de changer cela pour exécuter une autre commande dans ce même sous-shell qui changera l'état avant les prochaines commandes exécuter, donc ma ligne de commande shell va maintenant (conceptuel) être:
cmd0; cmd1 | cmd2
est-il possible d'avoir l'entrée envoyée à cmd1
au lieu de cmd0
dans ce scénario? Je suppose que la sortie inclura la sortie de cmd0
(qui sera vide) suivie par la sortie cmd2
.
cmd0
ne devrait pas réellement lire quelque chose de stdin
, cela fait-il une différence dans cette situation?
Je sais que c'est probablement juste une manière stupide de faire ceci, j'essaye de corriger en cmd0
sans altérer l'autre code trop significativement. Cela dit, je suis ouvert aux suggestions s'il y a une façon beaucoup plus propre d'aborder cela.
Il est difficile de comprendre ce que vous demandez. Donnez peut-être un exemple précis ou, mieux encore, décrivez ce que vous essayez de faire. – wallyk