如何向 Python Shell 命令添加参数?
How can I add parameters to a Python Shell command?
我有一个 Django + Python 应用程序。
我有一个 python 脚本,它将要求作为命令行选项。
我的问题是,当我尝试输入命令行参数时,脚本无法执行。当我取出命令行参数时,它运行良好。
我需要那些命令行参数。
我正在使用带有 Python Shell 的节点 JS,当在 django HTML 首页中单击按钮时执行 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);
我有一个 Django + Python 应用程序。 我有一个 python 脚本,它将要求作为命令行选项。
我的问题是,当我尝试输入命令行参数时,脚本无法执行。当我取出命令行参数时,它运行良好。 我需要那些命令行参数。
我正在使用带有 Python Shell 的节点 JS,当在 django HTML 首页中单击按钮时执行 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);