nodejs + express 调用本地 python程序

6 篇文章 1 订阅
4 篇文章 0 订阅

假设已经安装好 nodejs ;

cd /js/node_js ; 安装在当前目录的 node_modules/

npm install express --save 

或者 cnpm install express --save

web 服务器程序 server.js

const http = require('http');
const express = require('express');
const path = require('path');
const app = express();
const exec = require('child_process').exec;
var path1 = path.join(__dirname + '/index.html');
var server_info = '\nServer running at http://127.0.0.1:8000/  (CTRL+C to stop)';

function run_command(command) {
    console.log("\n" + command);
    exec(command, (err, stdout, stderr) => console.log(stdout, server_info));
}
// 静态文件路径
app.use(express.static('public'));

app.get('/', function(req, res) {
    res.sendFile(path1);
});

app.get('/draw_flower1', function(req, res) {
    res.sendFile(path1);
    res.redirect('/');
    run_command("pythonw /python/draw_flower1.py");
});

app.get('/draw_rose1', function(req, res) {
    res.sendFile(path1);
    res.redirect('/');
    run_command("pythonw /python/draw_rose1.py");
});

app.get('/draw_xilan1', function(req, res) {
    res.sendFile(path1);
    res.redirect('/');
    run_command("pythonw /python/draw_xilan1.py");
});

app.listen(8000, "127.0.0.1", function() {
    console.log(server_info);
});

index.html  用 jQuery.ajax 读取文本文件

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>python draw flowers</title>
 <script src="jquery-3.2.1.min.js"></script>
</head>
<body>
 <div class="container">
  turtle 画一朵花    <a href="#" onclick="readfile('draw_flower1.py');">源代码 </a>
  <form method="put" action="/draw_flower1">
    <input type="submit" value="运行 draw_flower1.py">
  </form>
  turtle 画一朵玫瑰花 <a href="#" onclick="readfile('draw_rose1.py');">源代码 </a>
  <form method="put" action="/draw_rose1">
    <input type="submit" value="运行 draw_rose1.py">
  </form>
  turtle 画一朵西兰花 <a href="#" onclick="readfile('draw_xilan1.py');">源代码 </a>
  <form method="put" action="/draw_xilan1">
    <input type="submit" value="运行 draw_xilan1.py">
  </form>
 </div>
 <p>
 <pre id="code"> </pre>
 </p>
<script type="text/javascript">
/**
 * 利用 ajax 读取文本文件
 * @param {文件路径} url 
 */
  function readfile(url){
    $.ajax({
        url: url, // 文本文件位置
        type: "GET", // 请求方式为 get
        async: false,
        dataType: "text", // 返回数据格式为 text
        success: function(data) { //请求成功完成后要执行的方法 
            $('#code').html(data);
        }
    })
  }
</script>
</body>
</html>

jquery.min.js , python 程序要放在 public/

运行 node server.js

浏览器访问 http://127.0.0.1:8000/

参考旧版本:python : html 调用本地python程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 基于vue2+Mysql+nodejs+express+element-ui的前后端分离图书管理系统 使用步骤: 本地运行方法  1.新建一个名为books_manage_system的数据库  2.将node目录下books_manage_system.sql文件导入到该数据库中,  3.在node/sql/booksystem.js文件内根据自己的数据库情况进行修改  4.运行后台  5.运行前台  6.打开提示的网址既可运行  7.如需通过ip地址访问,请在vue.config.js文件中修改配置 打包运行,及线上运行方法:  1.将根目录下books_manage_system.sql文件导入到数据库中  2.在node/sql/booksystem.js文件内根据自己的数据库情况进行修改  3.在books文件夹和node文件夹下分别执行npm install安装插件  4.注释掉books/src/network/request.js文件中的第4行代码  5.在books文件夹下执行npm run build打包前端文件,打包完成后将该目录新增的dist文件夹复制到node文件夹中  6.打包完成后将dist文件夹复制到node文件夹下  7.将node文件夹下baseURL.js文件中的ip地址,修改为自己电脑的IP,否则线上运行时,会导致部分图片无法访问  8.在node文件夹下执行node index.js  9.之后在处于同一网络中的设备下,输入ip及端口号即可访问页面
当我们在使用Node.js和Express框架进行接口调用时,有时会遇到“Maximum call stack size exceeded”错误。这个错误通常是由于递归调用函数或无限循环调用函数导致的。以下是一些可能导致这个错误的原因和解决方法: 1. 递归调用函数:如果你的代码中有递归调用函数,那么可能会导致这个错误。你可以通过检查你的代码并确保递归调用函数的退出条件正确来解决这个问题。 2. 无限循环调用函数:如果你的代码中有无限循环调用函数,那么也可能会导致这个错误。你可以通过检查你的代码并确保循环调用函数的退出条件正确来解决这个问题。 3. 调用栈溢出:如果你的代码中有大量的函数调用,那么可能会导致调用栈溢出。你可以通过增加Node.js的调用栈大小来解决这个问题。你可以在启动Node.js应用程序时使用--stack-size标志来增加调用栈大小,例如: ```shell node --stack-size=10000 app.js ``` 这将增加调用栈大小到10000。 4. 代码错误:如果你的代码中有其他错误,例如死循环或无限递归,那么也可能会导致这个错误。你可以通过检查你的代码并修复错误来解决这个问题。 5. 内存泄漏:如果你的代码中有内存泄漏,那么也可能会导致这个错误。你可以通过使用Node.js的内存分析工具来检查内存泄漏并修复它们来解决这个问题。 以下是一个可能导致“Maximum call stack size exceeded”错误的示例代码: ```javascript function foo() { foo(); } foo(); ``` 这个代码中的函数foo()会无限递归调用自己,最终导致调用栈溢出并抛出“Maximum call stack size exceeded”错误。要解决这个问题,我们需要添加退出条件,例如: ```javascript function foo(count) { if (count > 1000) { return; } foo(count + 1); } foo(0); ``` 这个代码中的函数foo()会递归调用自己,但是添加了退出条件,当count大于1000时,函数将不再递归调用自己,从而避免了调用栈溢出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值