You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Flask接口实现CSV文件查询并返回匹配用户输入的行数据

Flask CSV搜索接口修复方案

原有代码核心问题

  • 缺少Flask实例初始化代码,@app.route无法正常生效
  • CSV文件全局仅读取一次,首次请求读取后文件指针到末尾,后续请求无法获取数据
  • 冗余的request.form取值逻辑,GET请求没有Form表单数据,会直接抛出异常
  • 存在多处语法错误:缩进错误、字符串未闭合、换行符拼写错误、行匹配逻辑完全错误(row[0 or 1 or 2 ...]实际等价于row[0],仅判断第一列)
  • 响应生成逻辑错误,print(row)仅在控制台输出内容,返回的响应为空
  • 硬编码仅允许healthy/unhealthy作为输入,与任意关键词搜索的需求不符

修复后完整可运行代码

import csv
from flask import Flask, make_response, jsonify

# 初始化Flask实例
app = Flask(__name__)
# CSV文件路径常量
CSV_PATH = '/home/logs/containerlogs.csv'

@app.route('/logcheck/<user_input>', methods=['GET'])
def logcheck(user_input):
    # 存储匹配到的行
    matched_rows = []
    try:
        # 每次请求重新读取CSV,避免指针偏移问题
        with open(CSV_PATH, 'r', encoding='utf-8') as f:
            csv_reader = csv.reader(f, delimiter=',')
            for row in csv_reader:
                # 去除每行元素的前后空格后,判断是否包含用户输入的关键词
                cleaned_row = [item.strip() for item in row]
                if user_input.strip() in cleaned_row:
                    matched_rows.append(cleaned_row)
    except FileNotFoundError:
        return make_response("CSV文件不存在,请检查路径配置", 404)
    
    # 无匹配结果的返回
    if not matched_rows:
        return make_response(f"未找到和关键词【{user_input}】匹配的内容", 404)
    # 返回JSON格式的匹配结果,方便页面解析
    return jsonify(matched_rows)

if __name__ == '__main__':
    # 启动开发调试服务,默认端口5000
    app.run(debug=True)

功能说明

  • 支持任意关键词输入,会遍历CSV所有列搜索匹配内容,返回所有符合条件的完整行
  • 如果需要返回纯文本格式的结果,可以将return jsonify(matched_rows)替换为return make_response('\n'.join([','.join(row) for row in matched_rows]), 200, {'Content-Type': 'text/plain'})
  • 新增了文件不存在、无匹配结果的异常处理,避免服务直接崩溃
  • 开发阶段开启了debug模式,生产环境部署请关闭debug并配置对应WSGI服务

内容的提问来源于stack exchange,提问作者JayK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:54:03