Мне нужно обработать XML-файл и отправить его обратно, сохраняя все в памяти. Я пытался использовать BytesIO в качестве файлового объекта. Первоначально я попытался это:
with BytesIO() as file:
data.write(file, encoding='windows-1251')
return send_file(file,attachment_filename='output.xml',as_attachment=True)
, что привело к следующей ошибке:
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/werkzeug/wsgi.py", line 580, in __next__
data = self.file.read(self.buffer_size)
ValueError: I/O operation on closed file.
Однако, когда я делаю это:
with BytesIO() as file:
data.write(file, encoding='windows-1251')
file.seek(0)
return send_file(BytesIO(file.read()),attachment_filename='output.xml',as_attachment=True)
Все работаетхорошо. Может кто-нибудь объяснить мне, в чем проблема с первым и почему работает вторая попытка?