如何通过网页运行 Python 脚本? [复制]

Posted

技术标签:

【中文标题】如何通过网页运行 Python 脚本? [复制]【英文标题】:How do I run a Python script through a webpage? [duplicate] 【发布时间】:2019-10-19 22:52:34 【问题描述】:

我有一个名为 test.py 的 Python 脚本,其中包含许多函数和循环,可输出一些原始数据,我正在尝试从网页运行它。

作为第一步,我在下面使用烧瓶准备了一个非常简单的代码,以查看我的脚本是否有效。

我希望在网页上呈现输出(一些原始数据),但它似乎对我不起作用,也许我没有一个好的开始。

简而言之,我需要输入我的服务器地址并查看我的脚本的输出。

是的,如果一切顺利,我也会开发它以获取输入数据。

from flask import Flask, redirect, url_for, request
import test
app = Flask(__name__)

@app.route('/')

def dynamic_page():
  return test()

if __name__ == '__main__':
  app.run(debug=True)

【问题讨论】:

在顶部导入json并在dynamic_page函数中返回json.dumps(test()),看看是否有帮助 【参考方案1】:

Berk,Flask 的路由需要特定类型的响应(字符串、元组、响应实例等)。您可以阅读它们here。我猜您的测试函数不会返回任何所需的类型。 你可以做的是对test函数的结果进行json序列化并将其作为Flask响应返回,如果这不可能(因为test返回的值类型),那么只需将其打印到安慰。这样,您仍然可以确定您的函数调用有效。看下面的代码:

from flask import Flask, redirect, url_for, request

import test

# Also import json
import json

app = Flask(__name__)

@app.route('/')

def dynamic_page():
   resp = test()
   try:
      resp = json.dumps(resp)
   except:
      print(resp)
      return "Function executed. Check your terminal"
   else:
      return resp

if __name__ == '__main__':
    app.run(debug=True)

【讨论】:

它仍然无法运行脚本(测试)。 如果没有,那么当您访问/ 端点时会看到什么?你有错误吗?如果是,错误是什么?【参考方案2】:

test 到底是做什么的?

当用户访问路由时,您似乎正在尝试调用您的模块,相反,您应该调用一个函数。

如果你想在用户访问你的 Flask 路由时执行特定的功能,你可以这样做:

import test
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return test.my_function_here()

if __name == '__main__':
    app.run(debug=True)

【讨论】:

这假设 test 是一个模块而不是一个独立的脚本。从问题的描述来看,test 是一个控制台脚本,只是输出一些数据。 @Rashid'Lee'Ibrahim 你是对的,我的错! 是的,test 是一个包含多个功能的 scipt。【参考方案3】:

据我了解,您想从浏览器中调用 Python。

如果是这种情况,您只需向您的路由发送 Ajax GET 请求,该功能就会运行。

$.ajax(
  url: "/root/example/route/",
  method: "GET",
  success: () => console.log(`Python response: $response`)
);

然后添加如下路由函数:

@app.route("/root/example/route/", methods = ["GET"])
def example_route():
  print("This was called from the browser!")
  return "All finished here!"

当您在浏览器中运行 javascript 时,Ajax 会向 Flask 路由发送 GET 请求,该路由会输出:

This was called from the browser!

在您的终端中,它会发送:

All finished here!

JavaScript 将其记录到控制台的浏览器。

注意:如果不查看youmightnotneedjquery.com,我假设您正在使用 jQuery。

祝你好运。

【讨论】:

让我们continue this discussion in chat.

以上是关于如何通过网页运行 Python 脚本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中运行另一个脚本而不等待它完成? [复制]

如何获取正在运行的 Python 脚本的路径? [复制]

如何让 python 脚本作为可执行文件运行? [复制]

如何同时运行相同的 Python 脚本 X 次? [复制]

我可以通过调用在另一台计算机上运行 linux/windows 的计算机上运行 python 脚本吗? [复制]

如何知道我的脚本在哪个 Python 实例上运行? [复制]