有这样一个需求:使用python打开一个sh会话进程,然后持续地执行命令,像我们平时使用命令行一样可交互的,而不是直接run一段shell命令就没了,实现方法是使用subprocess包,
参考例子:
from subprocess import Popen, PIPE, STDOUT
p = Popen('/bin/bash', stdout=PIPE, stdin=PIPE, stderr=STDOUT)
p.stdin.write('touch 123')
p.stdin.write('touch 456')
p.communicate()
解释一下:在Popen里一定要带上参数stdin=PIPE,这样才可以持续向子进程发送消息,像stdin写,其实就是向子进程传参,communicate这个函数是主线程用来等待子线程结束的,也可以使用wait,如果不使用communicate或wait,那么一般子线程还没来得及执行上面两个命令就随着父线程一起死了,大家可以注释掉试试
参考:
https://docs.python.org/zh-cn/3/library/subprocess.html
https://segmentfault.com/q/1010000006766466
本文介绍如何使用Python的subprocess模块创建一个可以持续执行命令并进行交互的Shell会话。通过实例演示了如何利用Popen函数开启一个bash进程,并通过stdin管道持续向子进程发送命令,实现类似命令行的交互效果。

1732

被折叠的 条评论
为什么被折叠?



