我有一个python脚本,它通过将FILE作为输入返回JSON
文件作为输出。
我有10个文件,我在 for loop 中使用 spawnSync ,在内部循环中我有 fs.readFile 来读取JSON文件,这是来自python脚本。
但问题是 spawnSync 阻止 fs.readFile ,直到它执行包含所有10个文件的python脚本。由于 spawnSync 和 fs.readFile 都位于 for loop 中,我希望 fs.readFile 读取JSON文件只要第一个python脚本执行并输出JSON文件。
但它没有发生。 spawnSync 正在阻止,它继续执行下一个文件来执行python脚本。 fs.reafFile 应该在文件执行后立即打印数据。请帮忙,这是我的代码片段。
var spawn = require('child_process').spawnSync;
var fs = require('fs');
var filename = ['first.txt','second.txt','third.txt',....]
for(var i=0;i<10;i++)
{
var myscript = spawn('python',['/pathToPython/myPython.py',filename[i]]);
fs.readFile('/pathToPython/' + filename[i] + '.json','utf8',function(err,data){
if(err){
console.log(err);
}else{
console.log(data);
}
});
}
答案 0 :(得分:1)
如果您依赖使用第三方模块,我建议使用async.eachSeries async模块的方法来解决此问题
$ echo " CAT {" | sed 's/^\([[:blank:]]*\)CAT/\1DOG/'
DOG {