[英]Run python script from Node.js (child_process) with named arguments
我有一个 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", [
path.join(rootDir, "public", "python", "script.py"),
"arg1",
"--infile abc.csv",
"--encrypt true",
"--keyfile xyz.bin",
"1234",
"WOW",
"path",
]);
它没有运行并给出错误。 但是,如果我在没有 NAMED ARGUMENTS (--encrypt true) 等的情况下运行,它将成功运行:
const process = spawn("python2", [
path.join(rootDir, "public", "python", "script.py"),
"arg1",
"1234",
"WOW",
"path",
]);
我认为我传递 NAMED 参数的方式可能不正确。 请帮忙!
您需要拆分参数的每个部分:
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
基本上,您正在传递名为--infile abc.csv
的参数,其值为--encrypt true
。 这不是您打算运行的。 你想要的是:
python script.py arg1 --infile abc.csv --encrypt true --keyfile xyz.bin 1234 WOW path
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.