Blogger Information
Blog 6
fans 0
comment 0
visits 6887
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
如何在 JavaScript 中调用 Python ?
P粉379686903
Original
4623 people have browsed it

谁才是最好的编程语言?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结合到一起,提升开发效率。

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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post