2017-03-13 86 views
0

我想在Node.JS中「產卵」一個python腳本。 python腳本接受多個文件路徑作爲參數。此命令的工作:將多個參數傳遞給從node.js產生的python腳本

python3 script.py 'path1' 'path2' 'path3' 

在節點中,我給出一個變種與路徑:

args = ["path1", "path2", "path3"] 

但是當我嘗試產卵的腳本:

var spawn = require("child_process").spawn; 
var pyspawn = spawn(
    'python3', [pyscript.py, args] 
); 

但這似乎發出命令:

python3 script.py [path1,path2,path3] 

各種修修補補的concat()S,加入()S,和toString()是我能得到的東西看起來像:

python3 script.py "'path1' 'path2' 'path3'" 

...但不能爲我的生活圖如何簡單地做到這一點

回答

1

我認爲unshift可能是你在找什麼。

unshift()方法將一個或多個元素添加到數組的開頭,並返回新數組的新長度。

嘗試以下操作:

const spawn = require("child_process").spawn; 
const pyFile = 'script.py'; 
const args = ['path1', 'path2', 'path3']; 
args.unshift(pyFile); 
const pyspawn = spawn('python3', args); 

pyspawn.stdout.on('data', (data) => { 
    console.log(`stdout: ${data}`); 
}); 

pyspawn.stderr.on('data', (data) => { 
    console.log(`stderr: ${data}`); 
}); 

pyspawn.on('close', (code) => { 
    console.log(`child process exited with code ${code}`); 
}); 
+1

輝煌。我嘲笑這個,但從來沒有做過這個飛躍 - 在列表中包含pyfile文件! – Trees4theForest