使用命名参数从Node.js(child_进程)运行python脚本
我有一个python脚本,可以在命令行上使用此参数运行:使用命名参数从Node.js(child_进程)运行python脚本,python,node.js,python-2.7,child-process,spawn,Python,Node.js,Python 2.7,Child Process,Spawn,我有一个python脚本,可以在命令行上使用此参数运行: python2 arg1 --infile abc.csv --encrypt true --keyfile xyz.bin 1234 WOW path 但是,如果我尝试从Node.js子进程执行相同的操作,我会得到一个错误: const spawn = require("child_process").spawn; const process = spawn("python2", [ pa
python2 arg1 --infile abc.csv --encrypt true --keyfile xyz.bin 1234 WOW path
但是,如果我尝试从Node.js子进程执行相同的操作,我会得到一个错误:
const spawn = require("child_process").spawn;
const process = spawn("python2", [
path.join(rootDir, "public", "python", "script.py"),
"arg1",
"--infile abc.csv",
"--encrypt true",
"--keyfile xyz.bin",
"1234",
"WOW",
"path",
]);
它没有运行并且给出了一个错误。
但是,如果在没有命名参数(--encrypt true)等的情况下运行,它将成功运行:
const process = spawn("python2", [
path.join(rootDir, "public", "python", "script.py"),
"arg1",
"1234",
"WOW",
"path",
]);
我认为我传递命名参数的方式可能不正确。
请帮忙 您可能会发现这个小贴士很有用:
您需要拆分参数的每个部分:
const process = spawn("python2", [
path.join(rootDir, "public", "python", "script.py"),
"arg1",
"--infile",
"abc.csv", // indentation for clarity, it's not necessary
"--encrypt",
"true",
"--keyfile",
"xyz.bin",
"1234",
"WOW",
"path",
]);
原始脚本类似于在命令提示符下运行此脚本:
python script.py arg1 "--infile abc.csv" "--encrypt true" "--keyfile xyz.bin" 1234 WOW path
python script.py arg1 --infile abc.csv --encrypt true --keyfile xyz.bin 1234 WOW path
基本上,您传递的参数名为--infle abc.csv
,值为--encrypt true
。这不是你想要的。你想要的是: