ich habe ein in C++ geschriebenes Programm, in welches ich nacheinander zwei Zahlen eingeben muss und das mir dann das Produkt ausgibt. Dieses möchte ich jetzt mit Hilfe von Python aufrufen, ihm die beiden Zahlen geben und es wieder schließen. Schön wäre, wenn ich die Konsolenausgabe dann auch noch in eine Datei schreiben könnte. Was ich bisher habe:
Code: Alles auswählen
import subprocess
import pyautogui
import time
process = subprocess.Popen(["C:\Users\Susanne\Documents\Visual Studio 2015\Projects\ConsoleApplication1\Release\ConsoleApplication1.exe"])
time.sleep(1)
pyautogui.typewrite("5")
pyautogui.press("enter")
time.sleep(1)
pyautogui.typewrite("6")
pyautogui.press("enter")
time.sleep(3)
pyautogui.press("enter")
- Das Programm zur Multiplikation von zwei Zahlen ist nur ein Testprogramm. Das eigentliche Programm führt eine längere Rechnung aus, deren Dauer von der Eingabe abhängt. Mit obigem Weg müsste ich dann vorher abschätzen, wie lange die Rechnung maximal dauert und das Programm so lange pausieren lassen, was ziemlich unpraktisch ist und lange dauert.
- Auf die Ausgabe kann ich in Python nicht zugreifen.
Was ich mir bisher angeschaut habe, sind eine Umleitung der Ein- und Ausgabe mit stdin=subprocess.PIPE und stdout=subprocess.PIPE. Was ersteres tut und ob es überhaupt zur Lösung meines Problems beitragen kann, verstehe ich nicht so ganz.
Leite ich die Ausgabe um, habe ich keine Möglichkeit mehr, in der Konsole eine Eingabe der Zahlen zu tätigen. Außerdem kenne ich das Speichern der Ausgabe mittels check_output; wenn ich das verwende, läuft das Python-Skript jedoch erst weiter, wenn das Programm beendet ist, sodass ich damit keine Zahlen eingeben kann.
Danke schon mal im Voraus für eure Antworten!
PS: Der Vollständigkeit halber noch das C++ Programm.
Code: Alles auswählen
#include <iostream>
int main()
{
int a, b, c;
std::cout << "Zahl 1: ";
std::cin >> a;
std::cout << "Zahl 2: ";
std::cin >> b;
c = a * b;
std::cout << "Ergebnis: "<< c;
std::cout << "\n\n";
std::system("pause");
return 0;
}