如何使用 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, ...)
# ^^^^^^
一个简单的例子:
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, ...)
# ^^^^^^