如何在孩子还活着的时候读他的书

2024-04-24 19:05:32 发布

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

我创建了两个脚本,其中一个脚本执行另一个脚本并尝试实时接收它的输出。你知道吗

尝试获取输出的脚本:

import subprocess
p = subprocess.Popen("python .\\print.py", stdout=subprocess.PIPE)
print p.stdout.readline()

第二个脚本:

import time
print "1se12d12d32d3223"
print "\r"
time.sleep(10000)

问题是,我只在子进程结束时获得输出,即使行已经写入stdout。你知道吗

我尝试了以下方法:

  • 使用操作系统管道作为波本的一个参数,然后从“read”管道读取
  • 使用shell=True作为Popen参数
  • 使用bufsize=1作为Popen参数
  • 使用标准读取(), 标准输出.readlines(), 标准读取(1) 等等。。。你知道吗
  • 我不能使用fcntl模块使管道“不阻塞”,因为我使用Windows

我所要做的就是在子进程还活着的时候读取它的第一行标准输出。在python中如何做到这一点?你知道吗


Tags: pyimport脚本参数标准readline管道time
1条回答
网友
1楼 · 发布于 2024-04-24 19:05:32

默认情况下,Python缓冲其输出。在某些情况下,输出会自动刷新。例如,当您在终端中运行第二个脚本时,您将立即看到输出。你知道吗

可以通过在sleep()调用之前插入sys.stdout.flush()来显式刷新输出。你知道吗

相关问题 更多 >