Выполнение запроса к csv-файлу через flask

#rest #csv #flask

Вопрос:

Я не программист и пытаюсь научиться и заставить это работать для выполнения задания. Мне нужно использовать API rest flask для поиска и извлечения данных из CSV-файла на страницу. Цель состоит в том, чтобы пользователь вставил строку в /logcheck/<user_input>, это вызовет поиск <user_input><user_input> в файле csv, извлекет все строки данных и вернет результат.

Образец CSV и расположение на /главная/журналы/ И примерный снимок содержимого файла CSV следующим образом: [введите описание изображения здесь][1] [1]: https://i.stack.imgur.com/GQpDb.png

Код колбы следующий:

 import csv
from io import StringIO
import sys
from flask import Flask, request, send_file, jsonify, Response, render_template
from flask.helpers import make_response

csv_file = csv.reader(open('/home/logs/containerlogs.csv', "r"), delimiter=",")


@app.route('/logcheck/<user_input>', methods=['GET'])
def logcheck(user_input):
    healthy = request.form ['healthy']
    unhealthy = request.form ['unhealthy']
if user_input not healthy or not unhealthy:
    return make_response("Please try again./n Only word /logcheck/healthy or logcheck/unhealthy)
else:
    for row in csv_file:
        if user_input == row[0 or 1 or 2 or 3 or 4 or 5]:
            return make_response (print (row))

 

Заранее спасибо.

Ответ №1:

Вот код:

 #!/usr/bin/python3
import csv, json
from flask import Flask, make_response

csv_rows = []
with open('containerlogs.csv', "r") as o:
    csv_file = csv.reader(o, delimiter=",")
    for row in csv_file:
        csv_rows.append(row)
    o.close()

app = Flask(__name__)

@app.route('/logcheck/<user_input>', methods=['GET'])
def logcheck(user_input):
    #healthy = request.form ['healthy']     # Why request.form?
    #unhealthy = request.form ['unhealthy'] # If requests.form it works only when methods=['POST'].
    #if user_input not healthy or not unhealthy:
    if user_input != 'healthy' and user_input != 'unhealthy':
        return make_response("Please try again./n Only word /logcheck/healthy or logcheck/unhealthy")
    else:
        rows = '' #[]
        for row in csv_rows:
            if user_input in row:
                #rows.append(row)
                rows  = ', '.join(row)   '<br>'
        return make_response (rows) #json.dumps (rows)

app.run("0.0.0.0", 8080)
 

Комментарии:

1. Привет, Лима. Спасибо. Приведенный выше код работает, однако результаты выводятся в виде одной строки на странице. Может ли каждый из результатов отображаться строка за строкой на странице?

2. В некоторых местах предлагается добавить «/n», но, к моему счастью, это не работает. Как вы можете видеть, у меня очень ограниченные знания в области программирования. Ниже приведен выходной результат, в каждом результате нет разрыва строки. Есть ли способ добавить разрыв строки в конце каждого»] » или другой более простой способ, чтобы результат печатался строка за строкой? Заранее спасибо [[«Пн 1 ноября 21:38:11 NZDT 2021», «веб-сервер», «2.32%», «0.90%», «работает», «здоров»], [«Пн 1 ноября 21:38:21 NZDT 2021», «веб-сервер», «0.00%», «0.84%», «бег», «здоровый»],

3. Я отредактировал, теперь все в порядке?

4. Спасибо, Лима. Это работает идеально.