让 Javascript 执行 Python 脚本

Ste*_*eve 6 javascript python ajax

我有一个问题已经在这里和互联网上的其他地方被问过多次*,但我看到的答案不完整或无效。

我想要一个 JavaScript 函数runPy(),在被调用时(在浏览器中,例如通过单击按钮),将在我的服务器中执行一个 Python 脚本,我们将其称为test.py.

假设 test.py 只是设计用于创建一个文本文件并在其中写入“hello world”

Python

f = open('test.txt', 'w+')
f.write('hello world')
Run Code Online (Sandbox Code Playgroud)

根据其他答案,我拼凑了以下 JavaScript/jQuery 函数:

JavaScript

function runPy() {
    $.ajax({
        type:'POST',
        url:'test.py',
        success: function(data) {                                                     
            console.log(data)
        };
    });
}
Run Code Online (Sandbox Code Playgroud)

现在看来,这当然是不正确的。正如人们所预料的那样,它不是运行 Python 脚本,而是将脚本的内容打印到控制台:

安慰

f = open('test.txt', 'w+')
f.write('hello world')
Run Code Online (Sandbox Code Playgroud)

我将如何编辑 JavaScript(和/或 Python)来实现我想要的功能?在完美的世界中,我想避免导入任何新的依赖项(我已经看到了一些依赖于 Flask 或 Django 的答案),但乞丐当然不能成为选择者。

另外,如果我允许自己变得贪婪,那么能够将参数传递给 Python 脚本,甚至使用 JavaScript 调用 Python 脚本中的特定函数,并将结果传回给 Python 脚本,那就太好了客户端 JavaScript。

*类似问题
从 JS 调用 python 函数
如何从 javascript 调用 python 脚本?
从 JavaScript 函数运行 Python 脚本

Ven*_*nda 3

你正走在正确的道路上。

但是,这就是 POST 不起作用的原因。除 HTML 文件类型外,进行 POST 调用以获取服务器上的静态文件(即 random.js、random.css 等)将打印原始文件内容。在这种情况下,您需要在服务器端后端代码上处理此问题。我不知道您正在使用哪个后端框架,但这里有一些文章可以帮助您:

NodeJS:https://medium.com/swlh/run-python-script-from-node-js-and-send-data-to-browser-15677fcf199f

.NET:https://medium.com/better-programming/running-python-script-from-c-and-working-with-the-results-843e68d230e5

Java:从 Java 运行 .py 文件

更新!!:由于 Web 开发领域的最新发展,现在可以通过 WebAssembly 在客户端运行 Python。请在此处查找更多说明:Pyodide