Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
FakeStringIO ist eine von StringIO abgeleitete Klasse.
Könnt ihr mir sagen, was daran falsch ist?
Ich habe schon zum Beispiel https://stackoverflow.com/a/50438156/20216649 gefunden, aber ich möchte es ja nur umleiten.
@Fire Spike: Da würde man eher nach `os.devnull` umleiten und sich auch keinen Kontextmanager selber basteln, sondern `contextlib.redirect_stdout` verwenden. Falsch daran ist, das man damit halt nicht direkte Ausgaben über `stdout` vom Prozess erwischt. Und die Lösung dafür hast Du doch selbst verlinkt.
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan
Man kann das schon erreichen, zumindest unter Unix. Durch Forken und abgreifen der file deskriptoren des Kind-Prozesses. Dann hat man in dem parent volle Kontrolle.
__blackjack__ hat geschrieben: Sonntag 1. Januar 2023, 23:23
@Fire Spike: Bei echten Dateien bleiben nur echte Dateien, also wohl am sichersten/portabelsten tatsächlich Dateien auf einem Dateisystem.
Dann müsste ich es in eine Datei umleiten und die dann fortlaufend einlesen? Ich möchte den output nämlich verarbeiten.
Was willst Du denn eigentlich machen? Es hört sich komisch an, dass Du die Ausgabe von Modulen, die in C geschrieben sind, innerhalb von Python aufrufen und deren (Debug-)Ausgabe weiterverarbeiten willst.
Was sind denn das für Module?
@Fire Spike: Warum? Das sieht man doch nur wenn man das Programm auf der Konsole startet, und da geben alle GUI-Rahmenwerke mehr oder weniger viele Warnungen und Debug-Meldungen aus.
Edit: Wobei man im Fall von Qt auch eher nicht bei der Standardausgabe ansetzen würde, sondern beim Logging-System von Qt. Nach kurzer Recherche scheint `qInstallMessageHandler()` ein interessanter Ansatzpunkt zu sein.
Zuletzt geändert von __blackjack__ am Montag 2. Januar 2023, 14:44, insgesamt 1-mal geändert.
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan
@Fire Spike: Normalerweise startet man GUIs ja auch nicht über eine Konsole. Und das ist natürlich unter Windows anders, da haben GUI-Anwendungen ja gar keine Textausgabe. Falls sich das nicht mittlerweile geändert hat.
Edit: Wobei man natürlich auch mit den Log-Leveln spielen kann wenn man nicht wirklich ein paar wenige Ausgaben filtern will, sondern ganze Kategorien.
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan