返回文件列表的 Python Flask 应用程序

2024-01-02

我有一个基本的 Flask 应用程序,用于从 Pod 获取日志。我想在查询未完成时使用 send_from_directory 。我不想创建 zip 文件并列出它,而是想列出通过查询生成的日志文件。

from flask import Flask, send_from_directory
from flask import request
import http.server
import socketserver
import subprocess
import os
import sys
from urllib.parse import urlparse
from urllib.parse import parse_qs

app = Flask(__name__)
# write route for a namespace completely
@app.route('/logs')
def hello_world():
umgebung = request.args.get('umgebung', None)
product = request.args.get('product', None)
product_type = request.args.get('product_type', None)
output = (subprocess.check_output(['cmd', '/c', f'oc logs --tail=-1 -n awl-{umgebung} -l product={product},type={product_type}'])).decode();
if not output:
    output_as = (subprocess.check_output(['cmd', '/c', f'oc logs --tail=-1 -n awl-{umgebung} -l product={product},type=as'])).decode();
    output_db = (subprocess.check_output(['cmd', '/c', f'oc logs --tail=-1 -n awl-{umgebung} -l product={product},type=db'])).decode();
    output_as_file = open ("logs/output_as_log.log","w")
    output_db_file = open ("logs/output_db_log.log","w")
    output_as_file.write(output_as)
    output_db_file.write(output_db)
    path= 'logs'
    return send_from_directory(path, output_as_file,as_attachment=True) #HERE I DO NOT UNDERSTNAD WHAT SHOUDL  BE GIVEN       
output = "<br />".join(output.split("\n"))   
return output

我正在项目文件夹内的日志文件夹下创建日志文件。如何显示文件夹中的所有文件log?这样就可以点击下载了?

对接近投票的澄清!

应用程序应从特定文件夹返回文件。但是send_fron_directory没有按预期工作。


您可以使用列出所有文件操作系统列表目录 https://docs.python.org/3/library/os.html#os.listdir, 全局变量 https://docs.python.org/3/library/glob.html#glob.glob or the 路径库 https://docs.python.org/3/library/pathlib.html。然后可以在模板中输出结果。
然后添加一条新路由,该路由需要文件名作为参数,并通过以下方式从文件夹中传递文件发送自目录 https://flask.palletsprojects.com/en/1.1.x/api/#flask.send_from_directory。您可以将文件名作为路径传递给rule https://flask.palletsprojects.com/en/1.1.x/quickstart/#variable-rules.
据我正确理解,以下示例应该满足您的要求。

import os
from flask import Flask, render_template, send_from_directory

app = Flask(__name__)

@app.route('/logs/')
def logs():
    filenames = os.listdir('logs')
    return render_template('logs.html', files=filenames)

@app.route('/logs/<path:filename>')
def log(filename):
    return send_from_directory(
        os.path.abspath('logs'),
        filename,
        as_attachment=True
    )

应在下面添加以下模板templates/logs.html在应用程序目录中。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Logfiles</title>
  </head>
  <body>
    <ul>
    {% for file in files %}
        <li><a href="{{ url_for('log', filename=file) }}">{{ file }}</a></li>
    {% endfor %}
    </ul>
  </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回文件列表的 Python Flask 应用程序 的相关文章

  • 判断线程是否已经启动

    如何判断Python线程是否已经启动 有一个方法is alive 但这是真的before and while一个线程正在运行 你可以看看ident领域的Thread实例 这Python 2 7 线程文档 http docs python o
  • 在 python 2 和 3 的spyder之间切换

    根据我在文档中了解到的内容 它指出您只需使用命令提示符创建一个新变量即可轻松在 2 个 python 环境之间切换 如果我已经安装了 python 2 7 则 conda create n python34 python 3 4 anaco
  • 根据 pandas 中的条件交换列值

    我想按条件重新定位列 如果国家 地区是 日本 我需要将姓氏和名字反向重新定位 df pd DataFrame France Kylian Mbappe Japan Hiroyuki Tajima Japan Shiji Kagawa Eng
  • Pytest:如何使用从夹具返回的列表来参数化测试?

    我想使用由固定装置动态创建的列表来参数化测试 如下所示 pytest fixture def my list returning fixture depends on other fixtures return a dynamically
  • multiprocessing.freeze_support()

    为什么多处理模块需要调用特定的function http docs python org dev library multiprocessing html multiprocessing freeze support在被 冻结 以生成 Wi
  • 如何在 openpyxl 中设置或更改表格的默认高度

    我想通过openpyxl更改表格高度 并且我希望首先默认一个更大的高度值 然后我可以设置自动换行以使我的表格更漂亮 但我不知道如何更改默认高度 唯一的到目前为止 我知道更改表格高度的方法是设置 row dimension idx heigh
  • 基于 True/False 值的 Python 优雅赋值

    我想根据三个布尔值中的值设置一个变量 最直接的方法是 if 语句后跟一系列 elif if a and b and c name first elif a and b and not c name second elif a and not
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 熊猫记忆

    我有冗长的计算 我重复了很多次 因此 我想使用记忆 诸如jug http packages python org Jug and joblib http packages python org joblib memory html 与Pan
  • 别碰我的女人

    我讨厌的一件事迪斯图尔斯 http docs python org distutils 我猜他是邪恶的人 他这样做了 https github com python cpython blob 300dd552b15825abfe0e367a
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • dask allocate() 或 apply() 中的变量列名

    我有适用于pandas 但我在将其转换为使用时遇到问题dask 有一个部分解决方案here https stackoverflow com questions 32363114 how do i change rows and column
  • DRF:以编程方式从 TextChoices 字段获取默认选择

    我们的网站是 Vue 前端 DRF 后端 在一个serializer validate 方法 我需要以编程方式确定哪个选项TextChoices类已被指定为模型字段的默认值 TextChoices 类 缩写示例 class PaymentM
  • 本地设置的 Cython 编译器指令是否影响一个或所有函数?

    我正在努力使用 Cython 加速一些 Python Numpy 代码 并且对 本地 设置 如定义的here http docs cython org en latest src reference compilation html在文档中
  • 在 python 查询参数中使用 %20 而不是 + 作为空格

    我使用 python requests 编写了以下 python 脚本 http requests readthedocs org en latest http requests readthedocs org en latest impo
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 将数组从 .npy 文件读入 Fortran 90

    我使用 Python 以二维数组 例如 X 的形式生成一些初始数据 然后使用 Fortran 对它们进行一些计算 最初 当数组大小约为 10 000 x 10 000 时 np savetxt 在速度方面表现良好 但是一旦我开始增加数组的维
  • 如何抑制 Pandas Future 警告?

    当我运行该程序时 Pandas 每次都会给出如下所示的 未来警告 D Python lib site packages pandas core frame py 3581 FutureWarning rename with inplace
  • Python - 打印漂亮的 XML 为空标签文本创建开始和结束标签

    我正在编写一个 python 应用程序 它创建一个 ElementTree XML 然后使用 minidom 的 toprettyxml 将其写入文件 final tree minidom parseString ET tostring r

随机推荐

  • 防火墙是否会阻止端口 80 上的非 HTTP 流量?

    谁能确认在端口 80 上使用持久传出 TCP 连接不会被绝大多数消费者防火墙阻止 这是基于 HTTP 在 TCP 上运行这一事实的假设 但当然理论上可以分析数据包 问题是大多数消费者防火墙是否这样做 该功能称为 ALG 应用层网关 这是防火
  • Xcode AX 查找问题 - 仅发生在真实设备上

    尽管此错误令人担忧 但不会使应用程序崩溃 我无法确定为什么会发生这种情况 尽管我发现它只在我打电话时才会发生present picker animated true where picker is a UIImagePickerContro
  • 监听集合添加/更改作为视图的模型属性

    我有一个测量视图 它有一个关联的测量模型 它有两个集合 RepresentationsCollection 和 BeatsCollection 测量视图具有嵌套的子表示视图 每个表示视图都有自己的表示模型 并且所有表示模型共享对测量视图的
  • 多项选择题和答案的 MongoDB 模式设计

    我不擅长 MongoDB 设计 我需要设计数据库方面的帮助 最好的存储结构是什么有答案选择的问题 and 候选人的回答 每位考生将获得一套 12 个问题 如果考生在第一次考试中未通过 则可以再参加 2 次考试 因此 在每次考试中 考生每次都
  • UITabBarController 中奇怪的界面错误 UIScrollView。可以被其他人复制吗?

    我的 UIScrollView 出现了一个奇怪的界面错误 但我不知道如何解决它 我只写了一行代码 如下所示 它是一个空白项目的设置 很容易重现 Setting 我有一个UIScrollView其中包含一个UISegmentedControl
  • Swift 中带有超链接文本的 UITextView

    我有文本字段 我想要一些可点击的文本 以下是我的代码 请查看并感谢 let string Google let linkString NSMutableAttributedString string string linkString ad
  • 使用Mercurial分离三个版本:官方/开发/测试/

    我正在部署一个由几十个文件和文件夹组成的Python模块 我使用 Mercurial 来管理软件变更 我想将同一个模块保留在三个分支中 官方分支 团队使用的 开发分支 这可能不止一个开发分支 和测试分支 不是官方分支的测试 而是一个分支 与
  • 根据其他数据帧 python 中的值有条件地在数据帧中添加一列

    我在 pandas df 有一张桌子 id product 1 count 1 100 10 2 200 20 3 100 30 4 400 40 5 500 50 6 200 60 7 100 70 我在数据框 df2 中还有另一个表 p
  • 转换为 swift 3 后 Tests.swift 文件中没有这样的模块“Firebase”

    将项目转换为 swift 3 后 我在 Test swift 文件中收到此错误 No such module Firebase Command usr bin ditto failed with code 1 这是否意味着我必须更新 fir
  • 无法连接到另一个 Linux 系统上运行的 Docker 服务器

    我在 VirtualBox 的两个 Linux 操作系统上安装了 Docker VirtualBox 安装在我的 MAC OS X 10 11 笔记本电脑上 Linux操作系统版本的详细信息如下 CentOS 7 0服务器充当 Docker
  • 如何使用 d3.js 导入 XML 数据?

    有人可以提供一个如何使用 d3 从 XML 文件导入数据的基本示例吗 我的 XML 文件如下所示
  • 无法读取未定义的属性“pushState”

    我对 React Router 有一个简单的配置 我还有另一个基本上用 包裹的 它有效 但是这个没有 当然我尝试使用不同的实现 就像答案中建议的那样 这个帖子 https stackoverflow com questions 310790
  • 获取标记某个属性的所有属性

    我在那里有类和属性 有些属性可以标记属性 这是我的LocalizedDisplayName继承自DisplayNameAttribute 这是获取类的所有属性的方法 private void FillAttribute Type type
  • 配置自定义数据类型映射以与 System.Data.SqlClient.SqlParameter 一起使用

    我有一个名为CaseInsensitiveString这只是一个包装器 允许我的程序使用字符串而不关心它们的大小写 不过 当它持久化到数据库时 它与常规字符串没有什么不同 所以我希望能够将它与System Data SqlClient Sq
  • 添加索引以加快地理编码器附近的搜索速度

    在我的 Rails 应用程序中 我具有允许查找最接近当前登录用户的用户的功能 我正在为此使用地理编码器 gem 在用户模型中 我的范围如下 scope close to gt user distance where not id user
  • PostgreSQL JDBC 连接在 Android 4.0 上失败

    有谁知道我该怎么做才能使 JDBC 连接在 Android 4 0 上工作 它在 Android 1 6 2 3 上运行良好 我使用 Dave Cramer 的构建 http groups google com group pgandroi
  • 有没有办法观看 WPF 路由事件?

    我想知道是否有一种方法可以监视 WPF 应用程序中引发的所有 RoutedEvent 一种将有关触发到控制台的事件的一些信息写入控制台的方法将非常适合查看正在发生的情况 我找到了另一种方法 我已将其添加到我的用户控件的加载处理程序中 var
  • 列出多个 $query->set 的正确方法

    列出多个 query gt set 的正确方法是什么 我可以拥有多个 query gt set就像下面的 代码 A 或者我应该将它们合二为一 如果是 您将如何将这三者结合起来 query gt set代码 我尝试将它们组合在下面的 代码 B
  • JavaScript 搜索问题

    我有一段代码可以在表格中搜索某个短语 一旦找到该短语 它就会将当前单元格的innerHTML 返回到页面顶部附近的div 我遇到的问题是这样的 除非要搜索的短语包含任何特殊字符 括号和与号等 否则代码可以完美运行 我尝试修改 Western
  • 返回文件列表的 Python Flask 应用程序

    我有一个基本的 Flask 应用程序 用于从 Pod 获取日志 我想在查询未完成时使用 send from directory 我不想创建 zip 文件并列出它 而是想列出通过查询生成的日志文件 from flask import Flas