使用python中的子进程执行带有实时数据流的2个命令

时间:2019-01-24 16:14:50

标签: linux python-3.x subprocess

command="id\n/path/of/script/test_planning.py "
login="ap"+str(ins)
p=subprocess.Popen(["su","-",login],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
     (stdout,stderr) = p.communicate(command)
     print(stdout.decode('utf-8'))

在上面的代码中,仅在脚本完成执行后,我才能获得“命令”的结果,反正我可以实现这一点吗? (我很麻烦,因为使用popen我正在创建一个子进程来从root用户登录到另一个用户。然后切换(su-login),我应该运行这个“命令” 反正我可以使用p.communicate流数据吗?

p = subprocess.Popen(
    exe_command, bufsize=0,
    stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT)

while True:
    output = p.stdout.readline()
    if output.decode() == '' and p.poll() is not None:
        break

    print(output.decode(), end='')

如果exec_command(是唯一使用subprocess运行的东西),那么上面提到的代码就可以完成工作。

有没有一种方法可以使用子进程在实时流中运行2个命令?

0 个答案:

没有答案