Reputation: 10342
How to achieve the following functionality:
input
somethinginput
, the program responses with some output
output
Upvotes: 11
Views: 16382
Reputation: 9658
For sync behaviors, you can use subprocess.run()
function starting from Python v3.5
.
As mentioned in What is the difference between subprocess.popen and subprocess.run 's accepted answer:
The main difference is that
subprocess.run
executes a command and waits for it to finish, while withsubprocess.Popen
you can continue doing your stuff while the process finishes and then just repeatedly callsubprocess.communicate
yourself to pass and receive data to your process.
Upvotes: 1
Reputation: 310089
You probably want subprocess.Popen
. To communicate with the process, you'd use the communicate
method.
e.g.
process=subprocess.Popen(['command','--option','foo'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
inputdata="This is the string I will send to the process"
stdoutdata,stderrdata=process.communicate(input=inputdata)
Upvotes: 12