如何实现以下功能:
- Python执行一个shell命令,等待用户
input
做某事 - 用户键入后
input
,程序会响应一些output
- Python 捕获
output
你可能想要subprocess.Popen
. 要与进程通信,您将使用该communicate
方法。
例如
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)
对于同步行为,您可以使用subprocess.run()
从 开始的函数Python v3.5
。
正如Subprocess.popen 和 subprocess.run接受的答案有什么区别中所述:
主要区别在于
subprocess.run
执行命令并等待它完成,而subprocess.Popen
你可以在进程完成时继续做你的事情,然后重复调用subprocess.communicate
自己来传递和接收数据给你的进程。