In Python: Erfassen der Standardausgabe aus einer gemeinsam genutzten c ++ - Bibliothek in eine Variable

Aus anderen Gründen gibt die von mir verwendete gemeinsam genutzte c ++ - Bibliothek einige Texte an die Standardausgabe aus. In Python möchte ich die Ausgabe erfassen undIn einer Variablen speichern. Es gibt viele ähnliche Fragen zum Umleiten der Standardausgabe, die jedoch in meinem Code nicht funktionieren.

Beispiel:Unterdrückung der Ausgabe von Modulaufrufen außerhalb der Bibliothek

1 import sys
2 import cStringIO
3 save_stdout = sys.stdout
4 sys.stdout = cStringIO.StringIO()
5 func()
6 sys.stdout = save_stdout

In Zeile 5func () Ruft die Shared Library auf, werden die von der Shared Library erzeugten Texte noch auf Konsole ausgegeben! Wenn sich ändernfunc () um "hallo" zu drucken, Es klappt!

Mein Problem ist:

Wie erfasst man die Standardausgabe der gemeinsam genutzten c ++ - Bibliothek?auf eine Variable?Warum kann StringIO die Ausgaben der gemeinsam genutzten Bibliothek nicht erfassen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage