python - 如何在sails.js 应用程序中使用python-shell 访问python 脚本?
问题描述
我想访问一个 python 脚本并传递一个图像,然后等待一个 json 响应。获取图像后,我应该在“上传”功能中执行此操作。
一直在搜索,但找不到带帆的 python-shell。由于sails 是建立在node.js 之上的,所以大多数情况下都有办法。
module.exports = {
fileUpload: function(req, res) {
res.writeHead(200, { 'content-type': 'text/html' });
res.end(
'<form action="http://localhost:1337/postIts/upload" enctype="multipart/form-data" method="post">' +
'<input type="text" name="title"><br>' +
'<input type="file" name="uploadFile"><br>' +
'<input type="submit" value="Upload">' +
'</form>'
)
},
upload: function(req, res) {
var uploadFile = req.file('uploadFile')
uploadFile.upload({
saveAs: 'image.png'
}, function onUploadComplete(err, files) {
if (err)
return res.serverError(err);
return res.json({
message: files.length + ' file(s) uploaded successfully!',
files: files[0]
});
});
}
};
我想将此上传的图像传递给 python 脚本并等待我将返回给客户端的 json 输出。我没有尝试过任何事情,因为我不确定这样做的正确方法。
它应该与此类似,但我不知道正确的方法。在我的控制器中执行此操作。
应该有一个 import python-shell 某处,也许在 module.export 之前?
var PythonShell = require('python-shell');
var courseid=req.param('courseid');
sails.log.debug(coursed);
var options = {
args: [courseid]
};
PythonShell.run('word2vec.py', options, function (err, results) {
if (err) throw err;
console.log('results: %s', results[0]);
});
return res.ok();
解决方案
到目前为止,我已经尝试安装 pythonshell,然后尝试从控制器导入并将代码添加到调用 .py 脚本的上传函数,但我收到错误,我将上传错误图片。这是新代码:
import { PythonShell } from 'python-shell';
var PythonShell = require('python-shell');
module.exports = {
upload: function(req, res) {
var uploadFile = req.file('uploadFile')
uploadFile.upload({
saveAs: 'image.png',
}, function onUploadComplete(err, files) {
let options = {
mode: 'text',
pythonOptions: ['-u'], // get print results in real-time
scriptPath: sails.config.pythonPath,
args: ['1233ID', files[0].fd]
};
PythonShell.run('main2.py', options, function(err, results) {
if (err) throw err;
console.log('results: %s', results);
});
if (err)
return res.serverError(err);
return res.json({
message: files.length + ' file(s) uploaded successfully!',
files: files[0].fd
});
});
}
};
推荐阅读
- javascript - 我该怎么办:每次输入值更改时自动按“Enter”。(JS)
- javascript - 如何读取/传递 Vercel 系统环境变量以在 Sanity 中编码?
- pthreads - 如何获取现有互斥锁的属性?(pthread 库)
- python - 映射在单独文件中定义的 sql alchemy 数据库模型
- visual-studio-2019 - 如何从 Visual Studio 2019 的发布文件夹中排除某些文件或文件夹?
- python - 将带有月份和年份的列(“2020 年 8 月”...)转换为日期时间
- macos - 使用 Google Chrome [MacOS; 向网站输入输入并为文件夹中的所有文件生成输出;终端]
- jsp - 处理来自客户端的多个 Http 请求
- sql - 跨多个字段的条件更新
- c++ - 创建指向类的指针时对类和函数的未定义引用。项目是用 CMake 和 g++ 构建的