关于python:如何在-JavaScript-中调用-Python

44次阅读

共计 1851 个字符,预计需要花费 5 分钟才能阅读完成。

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

每个人都有本人的答案,然而,当范畴限定在 Web 开发,没有什么能胜过 JavaScript。

但有时咱们必须做一些要求更高的工作,例如,剖析大量的数据。

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

但这只是咱们网站的一个性能,天然不会因为这一点需要而用 Python 开发整个工程。

明天,就来给大家介绍一种可能将 JavaScript 和 Python 完满联合在一起,高效解决工程问题的办法。

 JavaScript+Python

这对于很多开发同学来说,相对算得上一个很吸引人的音讯。

咱们能够在 Node.JS 中应用子过程,在须要时运行一个 Python 脚本。

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

再来写一个 Python 脚本:

# script.py
doSometing()

除了这种形式,咱们也能够将数据传递给咱们的 Python 脚本。

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

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

import sys, json

def main():
    msg = sys.argv[1]
    doSometing(msg)

if __name__ == '__main__':
    main()

当初,咱们不须要在生成 Python 过程时传递数据,而是在工作工作流中发送数据。

const spawn = require('child_process').spawn,
const py = spawn('python3', ['script.py'])
const data = {msg: "Hello"}

py.stdin.write(JSON.stringify(data)) //we have to send data as a string, so we are using JSON.stringify
py.stdin.end()

批改一下 Python 脚本:

import sys, json

def main():
    lines = sys.stdin.readlines()
    data = json.loads(lines)
    doSometing(data['msg'])

if __name__ == '__main__':
    main()

最初,咱们能够从 Python 脚本中向 nodejs 发送响应。

const spawn = require('child_process').spawn
const py = spawn('python3', ['cscript.py'])

py.stdout.on('data', function(res){let data = JSON.parse(res.toString())
   console.log(data)
})

Python 代码为:

import sys

# You will have your own implementation of get data. In this case lets assume it returns a dict/json
res = getData()
print(json.dumps(data))

sys.stdout.flush()

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

以上就是本次分享的所有内容,如果你感觉文章还不错,欢送关注公众号:Python 编程学习圈 ,每日干货分享,发送“J”还可支付大量学习材料,内容笼罩 Python 电子书、教程、数据库编程、Django,爬虫,云计算等等。或是返回编程学习网,理解更多编程技术常识。

正文完
 0