1
Node.jsからPythonに引数を渡して、child_process
spawnで渡そうとしています。また、Node.js配列で指定した引数の1つを使用して、特定のPython関数を呼び出すこともできます。コマンドライン引数を使ってファイル内のPython関数を呼び出す
test.js
'use strict';
const path = require('path');
const spawn = require('child_process').spawn;
const exec = (file, fnCall, argv1, argv2) => {
const py = spawn('python', [path.join(__dirname, file), fnCall, argv1, argv2]);
py.stdout.on('data', (chunk) => {
const textChunk = chunk.toString('utf8'); // buffer to string
const array = textChunk.split(', ');
console.log(array);
});
};
exec('lib/test.py', 'test', 'argument1', 'argument2'.length - 2); // => [ 'argument1', '7' ]
exec('lib/test.py', 'test', 'arg3', 'arg4'.length - 2); // => [ 'arg3', '2' ]
ここでは二番目の引数は、test()
Pythonの関数を呼び出すべきか、test
です。
lib/test.py
は:
import sys
def test():
first_arg = sys.argv[2]
second_arg = sys.argv[3]
data = first_arg + ", " + second_arg
print(data, end="")
sys.stdout.flush()
私は、コマンドラインからの任意のNode.jsことなく、このPythonのファイルを実行しようとすると、実行は次のようになります。
$ python lib/test.py test arg3 2
test
、arg3
、および2
はコマンドライン引数ですが、test
はtest()
関数を呼び出す必要があります。この関数はarg3
,引数はprint()
です。
ありがとうございます!完璧に動作します! – Lanti
@Lanti問題はありません、喜んで助けてください – Avantol13