How to pass string to executable stdin using invoke.run() in Python
In our previous example How to capture stdout to string using invoke.run() in Python we showcased how to use invoke.run(..., out_stream=...)
to capture stdout to a StringIO which can then be converted to a string.
Similarly, we can pass a string to the sub-process stdin by first converting it into a StringIO
and then using invoke.run(..., in_stream=...)
.
stdin_str = "abc123" # what we want to pass to stdint
stdin_io = StringIO(stdin_str)
result = invoke.run("myexecutable", in_stream=stdin_in)
# ...
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow