Ограничение номеров строк с помощью Python (CSV Reader) - PullRequest
1 голос
/ 12 июля 2020

Я хочу указать ограничение на номера строк в приведенном ниже коде python, выполняя код, если у нас меньше 200 строк, и не запускайте код, если он больше 200. с помощью кода ниже я печатаю количество строк, но предложение if для ограничения строк дает мне ошибку.

TypeError: функция просмотра не вернула действительный ответ. Функция либо вернула None, либо завершилась без оператора return.

ERROR: index: Exception on / CreateStudent [GET]

Что я вижу в браузере: сервер обнаружил внутреннюю ошибку и был невозможно выполнить ваш запрос. Либо сервер перегружен, либо в приложении есть ошибка.

@app.route('/CreateStudent', methods=['GET','POST'])
    def upload_student():
        
       if request.method == 'POST':
            csv_file = request.files['file']
            if not csv_file:
                return render_template('error.html')
            csv_file = TextIOWrapper(csv_file, encoding='utf-8')
            csv_reader = csv.reader(csv_file)
            lines= list(csv_reader)
            print(lines)
            if len(lines) < 200:
                for row in lines:
                    if len(row)==4:
                        name=row[0]
                        familyname=row[1]
                        age=row[2]
                        job=row[3]
                        create_student(name,familyname,age,job)
                        time.sleep(2)
                return render_template('success.html')
            return render_template('CreateStudent.html')

когда я хочу также просто распечатать строки, я вижу свой результат, как показано ниже: [['Sara', 'Jacky' , '22 ',' инженер ']] почему в моем результате это 2 [[]], это из-за списка?

1 Ответ

1 голос
/ 12 июля 2020

Здесь я немного изменил ваш код и добавил комментарии, в которые внес изменения:

if request.method == 'POST':
    csv_file = request.files['file']
    if not csv_file:
        return render_template('error.html')
    csv_file = TextIOWrapper(csv_file, encoding='utf-8')
    csv_reader = csv.reader(csv_file)
    lines = list(csv_reader)            # <--- read the file into `lines`

    if len(lines) < 200:
        for row in lines:               # <-- we're iterating over `lines` now
            if len(row)==4:
                create_Student(*row)    # <-- no need to extract to variables, simple `*` is enough
        return render_template('success.html')

    return render_template('CreateStudent.html')    # <-- this is returned in case len(lines) >= 200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...