Es gibt eine Standard-Python-Bibliothek namens Subprozess. Dies ist ein Ersatz, der mehrere ausführbare Dateien gleichzeitig ausführen kann, diesmal jedoch mit Standardeingaben in die ausführbare Datei blockiert wurde.
Angenommen, Sie erstellen die folgende C ++ - Datei und machen sie zu einer Exe.
sample.cpp
include <iostream>
using namespace std;
int main(){
while(true){
int a;
cout << "input"
cin >>a;
cout << a * 2;
return 0;
}
}
Nun, ich erhalte nur die Nummer und zeige die Nummer an, die verdoppelt ist, aber ich möchte diese weiterhin ausführen und sie von Python aus ausführen, ohne sie einzeln zu starten.
Ich wusste nicht, was ich dabei tun sollte ...
Ich habe den vorherigen Code in ein ausführbares Format als sample.exe umgewandelt. Dann funktionierte der folgende Code.
import subprocess
#Universell, weil der Austausch mit Bytes schwierig ist_Zeilenumbruch auf wahr
sample = subprocess.Popen("sample.exe",
stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
if sample.stdout.readline() == "input:\n": #Der zu lesende Text muss bis zum Zeilenumbruch enthalten.
sample.stdin.write("20\n") #Eingabepausen sind ebenfalls erforderlich
sample.stdin.flush() #Da sich der Eingang im Zustand befindet, in dem er im Puffer akkumuliert ist, wird er hier zum ersten Mal zum Eingang.
Das funktioniert. Ich habe den wichtigen Teil in den Code geschrieben, also überprüfe ihn zusammen. Es ist wirklich schwierig. Unterprozess
Recommended Posts