博主信息
博文 6
粉丝 0
评论 0
访问量 8755
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
如何在 JavaScript 中调用 Python ?
P粉379686903
原创
4980人浏览过

谁才是最好的编程语言?Java、PHP、Python、Go、JavaScript….

每个人都有自己的答案,但是,当范围限定在Web开发,没有什么能胜过JavaScript。

但有时我们必须做一些要求更高的任务,例如,分析大量的数据。

在这种情况下,Python可能是一个更好的选择。

但这只是我们网站的一个功能,自然不会因为这一点需求而用Python开发整个工程。

今天,就来给大家介绍一种能够将JavaScript和Python完美结合在一起,高效解决工程问题的方法。

JavaScript+Python
这对于很多开发同学来说,绝对算得上一个很吸引人的消息。

我们可以在Node.JS中使用子进程,在需要时运行一个Python脚本。

  1. const spawn = require('child_process').spawn
  2. app.get("process_data", (req, res) => {
  3. spawn('python3', ['script.py'])
  4. })

再来写一个Python脚本:

  1. # script.py
  2. doSometing()

除了这种方式,我们也可以将数据传递给我们的Python脚本。

  1. const spawn = require('child_process').spawn
  2. app.get("process_data", (req, res) => {
  3. const msg = "Hello"
  4. spawn('python3', ['script.py', msg])
  5. })

在Python中,为了能够读取数据,你必须导入sys模块。

  1. import sys, json
  2. def main():
  3. msg = sys.argv[1]
  4. doSometing(msg)
  5. if __name__ == '__main__':
  6. main()

现在,我们不需要在生成Python进程时传递数据,而是在任务工作流中发送数据。

  1. const spawn = require('child_process').spawn,
  2. const py = spawn('python3', ['script.py'])
  3. const data = {
  4. msg: "Hello"
  5. }
  6. py.stdin.write(JSON.stringify(data)) //we have to send data as a string, so we are using JSON.stringify
  7. py.stdin.end()

修改一下Python脚本:

  1. import sys, json
  2. def main():
  3. lines = sys.stdin.readlines()
  4. data = json.loads(lines)
  5. doSometing(data['msg'])
  6. if __name__ == '__main__':
  7. main()

最后,我们可以从Python脚本中向nodejs发送响应。

  1. const spawn = require('child_process').spawn
  2. const py = spawn('python3', ['cscript.py'])
  3. py.stdout.on('data', function(res){
  4. let data = JSON.parse(res.toString())
  5. console.log(data)
  6. })

Python代码为:

  1. import sys
  2. # You will have your own implementation of get data. In this case lets assume it returns a dict/json
  3. res = getData()
  4. print(json.dumps(data))
  5. sys.stdout.flush()

这样,我们就可以在Web开发过程中,能够同时兼顾JavaScript、Python的优势,最大化发挥不同编程语言的价值。无需借助数据库,或者开发繁琐的api结构就可以有机的把JavaScript与Python结合到一起,提升开发效率。

以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎转发点赞,

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学