我有以下的Python代码(script.py):node.js的产卵标准输出弦破
import sys
import numpy as np
from scipy import stats
def generateBeta() :
fit = (0.075252656968743836, 498.49505071718869, 9.9999999999999991e-05, 0.18136881492296397)
rnd = stats.beta.rvs(fit[0], fit[1], fit[2], fit[3], 581)
rndStr = ""
for i in rnd:
rndStr += str(i) + ','
print rndStr[0:len(rndStr)-1]
if __name__ =='__main__' :
generateBeta()
当运行 “蟒蛇script.py” 我得到的是这样的:
0.000461650100253, 0.000100731728317,0.000106550237062,0.000168159408577,0.000167330103757,0.000100050650386,0.000127253399976,0.000100193300275,0.000101258755861,0.000115222086572,0.00010000230276,....
所有在一行
当我把它用下列方式node.js的child_process#产卵:
var sys = require('sys'),
spawn = require('child_process').spawn,
pyScript = spawn('python', ['./script.py']);
pyScript.stdout.setEncoding('utf8');
pyScript.stdout.on('data', function (data) {
console.log(data);
});
的数字得到的东西打断看上去像一个“\ n”,但并非如此。以某种方式流被中断,即,
0.000461650100253,0.000100731728317,0.000106550237062,0.000168159408577,0.000167330103757,0.000100050650386.0。 000127253399976,0.000100193300275,0.000101258755861,0.000115222086572,0.00010000230276,...
,其导出到一个错误的解释数据(即,使0.000127后来被解释为127 ..)
有谁知道为什么这样的中断发生?
谢谢!
Ariel。
似乎这不是解决问题.. 只是要更清晰,如果你这样做: pyScript.stdout.on( '数据',函数(数据){VAR = numsStr data.split(” ,'); numsStr.forEach(function(d){process.stdout.write(d +'\ n')}); }); 你会得到这样一个中断列表: 。 。 0.000100000110464 0.000106758505167 0.00010000000011 0.00 0.000119640546224 0.000100000000009 0.000101159669859 0.000100000000352 正如你所看到的,数量0.000103933774349将被解释为2号,分别为0.00和103933774349。 –
目前还不清楚这是你问的问题。需要了解的细节是,当你的''data''处理程序被调用时,它会传递一大块缓冲数据 - 它与你的数据没有任何关系。所以你不能假定它只会是一个数字,因此不能立即插入像'\ n'这样的分隔符。在输出数据之前,您需要自己收集和解析数据,或者仅使用您的Python脚本直接提供的任何分隔符。 – adpalumbo
Python在每个数字之间传递一个带有“,”的字符串。 var numsStr = data.split(',')应该注意分割这个。我正在收集数据并解析它。还有一个问题。 –