цикл с несколькими обратными перенаправлениями в колбе python

#python #flask

Вопрос:

Я использую python flask для создания инструмента, в котором ppl может загружать файлы, а затем эти файлы разбиваются на несколько файлов на основе некоторых критериев. Я нахожусь в точке, где файл может быть загружен и разделен, и хочу вернуться к пользователям.

Мой скрипт просматривает список, в данном случае список содержит [‘1′,’2’,’3] и сохраняет три файла: файл_1.csv, файл_2.csv и файл_3.csv.

Проблема, с которой я столкнулся, заключается в том, как вернуть несколько (в текущем случае три, но это число может измениться) обратно пользователю.

С моим текущим кодом см. Ниже (для меня в …. вернуть перенаправление…), я получаю только 1 файл (файл_1.csv), но ожидаю все три, один за другим.

Кто-нибудь может заметить мою ошибку? 🙂

         for i in rank_list: 
            new = df[df["Rank"] == i]
            new.to_csv(DOWNLOAD_DIRECTORY '/file_' str(round(i)) '.csv')  
            time.sleep(3)
            return redirect('/download/file_' str(round(i)) '.csv')




@app.route('/download/<path:path>',methods = ['GET','POST'])
def get_files(path):
try:
    return send_from_directory(DOWNLOAD_DIRECTORY, path, as_attachment=True)
except FileNotFoundError:
    abort(404)
 

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

1. Пожалуйста, проверьте свой код. И добавьте некоторый контекст о коде колбы. Похоже, что Flask используется для работы с HTML — формой и извлекает файлы из запроса. файлы и ответы HTML-страница, содержащая несколько обработанных файлов : правильно ? С помощью send_from_directory он отправляет 1 и только 1 файл. Если вы хотите вернуть несколько файлов, вы можете предоставить файл zip/tar/другой архив. Или же вы можете предоставить HTML-страницу со ссылками для загрузки каждого файла.

2. хм, хорошо, подумал, что это может быть немного проще, но да, можно создать html с файлами 🙂

Ответ №1:

У вас есть ваша return команда в цикле for. Проблема в том, что это return может произойти только один раз. Если вы хотите вернуть несколько значений, то вам нужно поместить их в список, вернуть список, а затем обработать список (перебрать их) на переднем конце