繁体   English   中英

从名为 arguments 的 Node.js (child_process) 运行 python 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM