Python/Flask – ValueError: операция ввода-вывода в закрытом файлеPython

Программы на Python
Ответить
Anonymous
 Python/Flask – ValueError: операция ввода-вывода в закрытом файле

Сообщение Anonymous »

Прежде чем кто-либо скажет, что это дубликат, я не думаю, что это потому, что я просматривал похожие вопросы, и они мне не помогли!

Я создаю сервер Flask на Python, и мне нужно иметь URL-адрес, показывающий PDF-файл.

Я пытался использовать следующий код:

Код: Выделить всё

@app.route('/pdf')
def pdfStuff():

with open('pdffile.pdf', 'rb') as static_file:
return send_file(static_file, attachment_filename='pdffile.pdf')
Предполагается, что когда я перейду в /pdf, он покажет PDF-файл pdffile.pdf.

Однако это не работает, поскольку при запуске кода я получаю следующую ошибку:

Код: Выделить всё

ValueError: I/O operation on closed file
Как это происходит? Мой оператор возврата находится внутри оператора with, поэтому разве файл не должен быть открыт?

Я пытался использовать обычный static_file = open(...) и использовали операторы try и Final, например:

Код: Выделить всё

static_file = open('pdffile.pdf','rb')
try:
return send_file(static_file, attachment_filename='pdffile.pdf')
finally:
static_file.close()
Та же ошибка возникает и с приведенным выше кодом, и я понятия не имею, почему. Кто-нибудь знает, что я делаю не так?

Извините, если я глуп и я допустил ошибку в чем-то простом!

Заранее большое спасибо!!!

Подробнее здесь: https://stackoverflow.com/questions/369 ... losed-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»