在Python中使用Popen登录到stdout和文件

时间:2018-10-15 12:53:11

标签: python-3.x subprocess

我正在使用Popen运行python脚本,该脚本将递增的整数值输出到stdout。我正在尝试使用Popen同时将值打印到stdout并将其记录到文件中:

logfile_out = open('test.log','a') 
p1 = subprocess.Popen("stub_proc.py",shell=True,stdout = subprocess.PIPE,stderr = subprocess.STDOUT)
p2 = subprocess.Popen("stub_proc.py",shell=True,stdout = subprocess.PIPE,stderr = subprocess.STDOUT)

proc_lst = [p1,p2]
while len(proc_lst) > 0:
    for p in proc_lst:

        for line in p.stdout:
            sys.stdout.write(line.decode('UTF-8'))
            logfile_out.write(line.decode('UTF-8'))


    if not p.poll() is None:
        proc_lst.remove(p)


    time.sleep(5)


print ("finished!")

stub_proc只是以下代码:

print ("start")

for i in range(15):
    print(i)
    time.sleep(3)

print ('finish')
sys.exit(0)

我的问题是读取子进程的输出块直到完成为止,然后才读取第二个进程的输出,而不是交替地从一个子进程再从另一个子进程读取。我该如何解决?

谢谢!

0 个答案:

没有答案