Wie man stdout mit invoke.run() in Python in einen String umleitet

Dieses Beispiel zeigt, wie man stdout in einen String umleitet, anstatt es auf System-stdout auszugeben:

Der grundlegende Trick besteht darin, ein StringIO zu initialisieren (ein dateiähnliches Objekt, in das pyinvoke die stdout vom Subprozess schreiben kann) und es an das out_stream-Argument von invoke.run() zu übergeben

invoke_capture_stdout.py
import invoke
from io import StringIO

outStream = StringIO()
result = invoke.run("wg genkey", out_stream=outStream)
stdout_str = outStream.getvalue()
print("Result: ", stdout_str)

Check out similar posts by category: Python