gpt4 book ai didi

python - 打印出 os.popen() 的输出而不在 python 中缓冲

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:32 26 4
gpt4 key购买 nike

假设我有一个进程可以打印出一些数据,例如这个 ruby​​ 代码。

1.upto(10) { 
|i|
puts i
puts "\n"
sleep 0.6
}

我想要一个 python 代码来生成这个过程,并从中读取数据以打印出来。

import os 
import sys
cmd = "ruby /Users/smcho/Desktop/testit.rb";
pingaling = os.popen(cmd,"r")
while 1:
line = pingaling.readline()
if not line: break
print line,
sys.stdout.flush()
pingaling.close()

这段代码的问题是它没有一个一个地打印数字。似乎 python 在最后一点打印出所有缓冲数据。

有没有办法在没有缓冲的情况下打印出衍生进程的输出?

最佳答案

数据正在由 ruby​​ 缓冲。使用类似的东西

$stdout.flush

让它齐平。我不确定这样做是否是正确的 ruby​​ 命令。


强制性的:

使用subprocess 模块。 os.popen has been replaced由它。

import subprocess
import sys

cmd = ["ruby", "/Users/smcho/Desktop/testit.rb"]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, ''):
print line,
sys.stdout.flush()
p.wait()

关于python - 打印出 os.popen() 的输出而不在 python 中缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com