繁体   English   中英

如何向 Python Shell 命令添加参数?

[英]How can I add parameters to a Python Shell command?

我有一个 Django + Python 应用程序。 我有一个 python 脚本,它将需求作为命令行选项。

我的问题是,当我尝试输入命令行参数时,脚本无法执行。 当我取出命令行参数时,它运行良好。 我需要那些命令行参数。

当在 django HTML 首页中单击按钮时,我使用带有 Python Shell 的节点 JS 来执行 python 脚本。

这是我的代码:

let {PythonShell} = require('python-shell')
var path = require("path")

function track_object() {
  //document.getElementById("detect").value = "One moment please ..."
  var python = require("python-shell")
  var path = require("path")

//let {PythonShell} = require('python-shell')

    var options = {
    scriptPath : path.join(__dirname, '/../engine/opencv-object-tracking/'),
    pythonPath : '/usr/bin/python'
    }

  **//let pyshell = new PythonShell("opencv_object_tracking.py --video dashcam_boston.mp4 --tracker csrt", options);
  let pyshell = new PythonShell("opencv_object_tracking.py", options);**

}

注意:粗体两行显示了带参数和不带参数的脚本调用

请让我知道使用 Python Shell 传递命令行参数的正确方法是什么。

***** 编辑 ***** 这是我的编辑 argparse:

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-v", "--video", type=str,
    help="path to input video file")
ap.add_argument("-t", "--tracker", type=str, default="csrt",
    help="OpenCV object tracker type")
args = vars(ap.parse_args())

# extract the OpenCV version info
(major, minor) = cv2.__version__.split(".")[:2]

# if we are using OpenCV 3.2 OR BEFORE, we can use a special factory
# function to create our object tracker
if int(major) == 3 and int(minor) < 3:
    tracker = cv2.Tracker_create(args["tracker"].upper())

您应该在选项变量上添加参数。 例如,

var options = {
    mode: 'text',
    scriptPath : path.join(__dirname, '/../engine/opencv-object-tracking/'),
    pythonPath : '/usr/bin/python',
    args: ['--video dashcam_boston.mp4 --tracker csrt']
    }

此外,如果您需要执行后的输出,您可以添加pythonOptions: ['-u']参数。

--编辑1--

这很奇怪,但它是关于引号的。 如果你使用"而不是' ,它工作得很好。这是下面的代码,适用于我的电脑

 var options = {
   scriptPath : path.join(__dirname, './'),
   pythonPath : '/usr/bin/python',
   args: ["--video", "dashcam_boston.mp4","--tracker", "csrt"],
   mode: 'text'
 }

 let pyshell = new PythonShell("./opencv_object_tracking.py", options);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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