2017-06-07 7 views
0

以下のコードでは、ポート3000でHTTPサーバーを作成し、いくつかのgetパラメーターを追加しました。私はlocalhost:3000/key1/abc/key2/234のpythonスクリプトが呼び出されるように、このexpress.jsサーバコードでpythonスクリプトを呼び出すとします。私はsys.argvとして入力引数を取る私のpythonスクリプトを準備しました。このコードでpythonスクリプトを呼び出す方法を提案し、value1とvalue2を入力引数として取り、jsonを返すようにしてください。ノードjsエクスプレスサーバーでPythonスクリプトを呼び出す

var express = require('express'); 
var app = express(); 
app.get('/key1/:value1/key2/:value2',function(req,res) 
{ 
    console.log(req.params); 
    var value1 = req.params.value1; 
    var value2 = req.params.value2; 
    res.send(req.params); 
}); 
app.listen(3000,function() 
{ 
    console.log("Server listening on port 3000"); 
}); 

答えて

0

Node.jsからPythonスクリプトを実行するには、新しいプロセスを作成する必要があります。 child_processでこれを行うことができます。

実行ファイルとしてpythonを実行し、スクリプト名を最初の引数として指定します。ここで

は、上記のリンクのドキュメントに基づい例です:

const spawn = require('child_process').spawn; 
const ls = spawn('python', ['script.py', 'arg1', 'arg2']); 

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

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

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

とどのようにPythonのプログラムのようにそれを受け入れることができるようにパラメータを渡すと、それを実行したい場合sys.argvを呼び出してjson –

+1

を返します。var arg1 = req.params.value1; var arg2 = req.params.value2; const ls = spawn( 'python'、['script.py'、arg1、arg2]);これは正しいです? –

0

あなたがのparams

const scriptExecution = spawn(pythonExecutable, ["my_Script.py", "Argument 1","Argument 2"]); 
関連する問題