[PYTHON] Ich kann im Unterprozess keinen Standard eingeben ...

Problem

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 ...

Lösung

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

Ich kann im Unterprozess keinen Standard eingeben ...
Ich kann keine Zeichen in den Textbereich eingeben! ?? !! ?? !! !! ??
Scikit-learn kann nicht in Python installiert werden
Ich kann Python-Skripte in Eclipse nicht debuggen
Ich kann das Element in Selen nicht bekommen!
Warum kann ich matplotlib nicht mit Python installieren? !!
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Ich habe PEP 585 gelesen (Type Hinting Generics In Standard Collections)
Anaconda kann nicht installiert werden!
Iframe in Seite mit Selenium kann nicht bearbeitet werden
[Hinweis] Das installierte Modul kann nicht im Jupiter aufgerufen werden.
Ich kann den Darknet-Befehl in Google Colaboratory nicht verwenden!
Ich kann mich mit Django 3 nicht auf der Admin-Seite anmelden
Ich habe Python auf Japanisch geschrieben
Schreiben Sie die Standardeingabe in den Code
Transmutationsmatrix im Python-Standard
Ich kann nicht mit # google-map suchen. ..
Ich verstehe Python auf Japanisch!
Was ich in Python gelernt habe
Ich habe an AtCoder (ABC158) teilgenommen.
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
Ich kann keine Module im übergeordneten Verzeichnis importieren, auch nicht mit sys.path.append ('..')