pro*_*eek 3 ruby python flush popen
假设我有一个进程打印出一些类似于这个ruby代码的数据.
1.upto(10) {
|i|
puts i
puts "\n"
sleep 0.6
}
Run Code Online (Sandbox Code Playgroud)
我想要一个生成此过程的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()
Run Code Online (Sandbox Code Playgroud)
这段代码的问题在于它不会逐个打印数字.似乎python在最后一点打印出所有缓冲的数据.
有没有办法打印出没有缓冲的衍生过程的输出?
ruby正在缓冲数据.使用类似的东西
$stdout.flush
Run Code Online (Sandbox Code Playgroud)
让它齐平.我不确定这是否是正确的ruby命令.
强制性:
使用subprocess模块.os.popen 已被它取代.
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4659 次 |
| 最近记录: |