2017-02-26 5 views
-1

Also schreibe ich ein Programm, das an einer Stelle eine separate ausführbare Datei aufrufen muss. Ich verwende subprocess.call, um mein ausführbares Python-Skript über die Befehlszeile aufrufen zu lassen. Das Problem besteht darin, dass diese ausführbare Datei den Benutzer während der Ausführung zweimal zur Eingabe auffordert. Ich möchte, dass mein Skript die ausführbare Datei eingibt, aber ich bin mir nicht sicher, wie ich es machen soll.Subprocess.call und Programme, die nach Eingabe fragen

Dies ist auf Windows 10, sollte das einen Unterschied machen.

Antwort

0
import os 
os.system("exec_name arguments") 

Übergeben Sie die Eingaben als Argumente an die ausführbare Datei.

+0

Die Eingaben werden in einer Aufforderung an den Benutzer während der Ausführung der ausführbaren Datei gefragt. Zusätzliche Argumente scheinen nichts zu tun. – eyeballfrog

+0

"Das Problem ist, dass diese ausführbare Datei den Benutzer zur Eingabe zweimal auffordert. Ich möchte, dass mein Skript der ausführbaren Datei diese Eingabe gibt, aber ich bin nicht sicher, wie es geht." Ich nahm an, dass Sie die Eingaben zuvor hatten und der Aufruf der ausführbaren Datei für Eingaben überflüssig war. –

0

Sie müssen die subprocess.Popen class verwenden, um eine Instanz zu erstellen, die den Subprozess darstellt, mit dem Sie später über die Instanz .communicate() kommunizieren möchten.

So etwas sollte

arbeiten
proc = subprocess.Popen([executable_name] + args, 
         stdin=subprocess.PIPE, stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE) 
out, err = proc.communicate(input_str) 

subprocess.check_call macht etwas Ähnliches unter der Haube.

+0

Ich versuchte das, aber es gab mir einen Fehler, der sagte, dass es nach einer Eingabe vom Typ Bytes und nicht nach einer Zeichenfolge suchte. Das Umschalten der Eingabe in ein Byte-Array gab mir dann "Kann nach dem Start der Kommunikation keine Eingabe senden", was ziemlich verwirrend ist. – eyeballfrog

Verwandte Themen