2017-11-28 3 views
0

Ich versuche, einen BefehlPython Subprozess Befehl Sprechaufforderung

ionic cordova prepare 

zu nennen, die für eine „Y/N“ Antwort auffordert. Ich möchte immer, dass dies ja ist. Wenn ich os.system benutzen wollte, blieb es im letzten Teil hängen und nicht in den Rest des Skripts. Kennt jemand den richtigen Weg, dies zu schreiben?

Dies ist, was ich versucht

foo_proc = Popen(['ionic', 'cordova', 'prepare'], stdin=PIPE, stdout=PIPE) 
yes_proc = Popen(['yes', 'y'], stdout=foo_proc.stdin) 
foo_proc.communicate()[0] 
yes_proc.wait() 

Aber es hängt nur auf den Befehl und scheint nicht

+1

Nur * eine * Eingabeaufforderung? Warum sollte "yes_proc" überhaupt ausgeführt werden, anstatt 'foo_proc.communicate ('y \ n')' um ein einzelnes 'y' an die Standardeingabe von' foo_proc' zu übergeben? –

+0

Sie meinen laufen foo_proc = Popen (['ionic', 'Cordova', 'vorbereiten'], stdin = PIPE, stdout = PIPE) foo_proc.communicate ('y \ n') Wenn ich das tun scheint es überspringe einfach den Befehl. Es führt nie – elcapitan

+0

Ich meine läuft * was *? BTW, kann dieses Problem nicht reproduzieren, wenn '[' ionic ',' cordova ',' prepare '] 'zu' [' head ',' -n ',' 1 '] 'geändert wird, was bedeutet, dass es etwas Bestimmtes gibt 'ionic' Befehl geht weiter. –

Antwort

0

Vereinbaren Sie mit Charles Duffy Beispiel kann hier auszuführen, dies kann Ihnen helfen !!

from subprocess import Popen,PIPE 
foo_proc = Popen(['ionic', 'cordova', 'prepare'], stdin=PIPE, stdout=PIPE) 
foo_proc.communicate(input='y')