Ich habe da ein Beispielprogramm, dessen Ausgabe ich live verfolgen möchte. Die realen Programme laufen deutlich länger und können Eingaben mit "input()" erwarten:
Code: Alles auswählen
import time
MAX = 4
i = 0
while i < MAX:
print('runlong,', i+1, 'von', MAX)
time.sleep(1)
i += 1
print('finished')
Code: Alles auswählen
import subprocess
import sys
proc = subprocess.Popen([sys.executable, '-u', 'runlong.py'],
text=True,
bufsize=0,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
while proc.poll() is None:
print(proc.stdout.readline())
print('retcode:', proc.returncode)
print(proc.communicate())
Wie kann ich die Option "-u" loswerden? "bufsize" scheint keine Auswirkung zu haben und auch "os.pipe()" mit entsprechenden "fdopen()" lässt mich die Buffersize nicht merklich einstellen.
Wie kann ich in der while-Schleife (unteres Programm) abfragen, ob das obere Programm seinerseits Daten/Eingaben (per "input()") erwartet?
(Programm soll unter Win10 laufen)
Danke!