python - 使用 html 按钮和烧瓶连接 python 脚本
问题描述
我正在尝试创建一个 webapp,并且对它相当陌生。我有一个 python 脚本(file.py),可以转换用户选择的数据。它处理所有的输入和输出。
我正在使用烧瓶(main.py)作为它的服务器部分和html。我想在我的 html 代码中放置一个按钮,以便开始执行 file.py。任何人都可以帮助我为 3 之间的连接设置示例吗?
我查看了其他示例,但我无法重新创建它,因为它们正在做不同的事情。此外,file.py 相当大,所以我想避免将它放入函数中。
编辑:不是在寻找烧瓶教程。我尝试了 3 件事:
- 一个外壳弹出半秒钟,但消失了。然后我被重定向到一个页面,该页面只有我的 html 文件中的 return 语句中的文本
<form action="/pic" method="POST">
<input type="submit" value="GET THE SCRIPT">
</form>
在我的 main.py 烧瓶文件中
@app.route('/pic', methods=['GET', 'POST'])
def pic():
os.system("python file.py") #file.py is the script I'm trying to start
return "done"
- 根本不做任何事情。在 html 文件中:
<input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="goPython()">
<script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script>
function goPython(){
$.ajax({
url: "/scripts/file.py",
context: document.body
}).done(function() {
alert('finished python script');;
});
}
</script>
- 我收到一条 GET "/scripts/file.py HTTP/1.1" 404 消息。我的脚本文件夹与模板文件夹位于同一目录中。还尝试将脚本文件夹放在模板文件夹中。
在 HTML 中
<form action="/run" method = "POST">
<input type="button" id='script' name="submit" value="Run Scripttttttt">
</form>
在烧瓶 main.py
@app.route('/run',methods=['GET', 'POST'])
def index():
def inner():
proc = subprocess.Popen(
['python file.py'],
shell=True,
stdout=subprocess.PIPE
)
for line in iter(proc.stdout.readline,''):
time.sleep(1)
yield line.rstrip() + '<br/>\n'
return Flask.Response(inner(), mimetype='text/html')
解决方案
您可以设置一个 Flask 端点,您的按钮可以向该端点发送请求。然后让端点的函数调用你的 python 脚本。
查看有关Flask - Calling python function on button OnClick 事件的讨论以及有关How can I make one python file run another? 让你开始。
推荐阅读
- c# - 使用 volatile bool 创建一个不可重入的“非暂停”定时器
- python - 在 OCR 的行、单词和字符分割中使用查找轮廓
- c# - Gridview没有在更新面板内更新?
- c# - C#/CIL:本机 int 类型
- c# - C# 检查对象是否为空
- c++ - CMake:无法打开共享对象文件:没有这样的文件或目录
- python - 为什么这两个使用 tkinter 创建小部件网格的程序执行不同?
- bash - 使用多个 if 语句生成命令所需的语法
- ruby-on-rails - Rails find_or_create_by 将强制转换添加到哈希值 json 类型属性?
- html - 量角器找不到 Angular 日期选择器