如何使用 iter() 和 yield 遍历两个列表?

How to iterate through two lists with iter() and yield?

一个简单的例子:

 popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, shell=True)
 for stdout_line in iter(popen.stdout.readline, ""): # how to add popen.stderr.readline check?
     yield stdout_line

我们从popen.stdout读取,但我们也想同时从stderr读取!我们不知道进程何时结束。

那么如何使用 iter() 和 yield 遍历两个列表?

这些不是列表,使用它们的正确方法不是您使用列表的方式。如果您想将进程的标准输出和标准错误填充到一个组合流中,请使用输出重定向来实现:

from subprocess import PIPE, STDOUT

process = subprocess.Popen(cmd, stdout=PIPE, stderr=STDOUT, ...)
#                                                   ^^^^^^