要实时获取子进程的stdout,可以使用以下方法:
stdout=subprocess.PIPE
来捕获子进程的标准输出。import subprocess
# 创建子进程
process = subprocess.Popen(['command'], stdout=subprocess.PIPE)
# 实时获取子进程的stdout
while True:
output = process.stdout.readline()
if output == b'' and process.poll() is not None:
break
if output:
print(output.strip())
# 等待子进程结束
process.wait()
process.stdout.readline()
会实时读取子进程的输出,如果输出为空且子进程已经结束,则退出循环。注意,readline()
返回的是字节类型,需要使用strip()
方法去除换行符。['ls', '-l']
来执行ls -l
命令。stderr=subprocess.PIPE
,并使用process.stderr.readline()
来读取。请注意,以上答案仅供参考,具体实现方式可能因编程语言、操作系统等因素而有所差异。
领取专属 10元无门槛券
手把手带您无忧上云