博客列表 >如何在 JavaScript 中调用 Python ?

如何在 JavaScript 中调用 Python ?

P粉379686903
P粉379686903原创
2022年07月13日 16:10:444608浏览

谁才是最好的编程语言?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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议