复制子进程popen的输出以便打印并保存到管道中?

2024-04-25 19:47:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望以某种方式运行subprocess.Popen('echo 1; sleep 1; echo 1', shell=True, stdout=?),使输出(在运行时)出现,并且能够将其保存到管道或文件中

到目前为止,我运行时proc = subprocess.Popen('echo 1; sleep 1; echo 1', shell=True, stdout=PIPE, stderr=PIPE)给出了第二个要求,然后我将打印out, err = proc.communicate()的结果,但是使用communicate是阻塞的,因此,如果Popen需要很长时间,我无法显示输出,这是不可接受的

我是否可以将stdout=字段留空(以启用控制台输出)并将输出复制到管道

更新。这与Python Popen: Write to stdout AND log file simultaneously不同,因为我希望能够在运行期间访问oputput,而那里的解决方案建议访问proc.stdout,它会一直阻塞到运行结束


Tags: 文件echotrue管道stderrstdout方式sleep