Как прочитать файл в памяти в FastAPI и передать его в библиотеку MarkItDown?Python

Программы на Python
Ответить
Anonymous
 Как прочитать файл в памяти в FastAPI и передать его в библиотеку MarkItDown?

Сообщение Anonymous »

Необходимо загрузить файл на конечную точку FastAPI, преобразовать его в Markdown и сохранить текст в Redis (размер файлов до 4 МБ).
Единственная логика, которую я могу На данный момент я нашел, что нужно загрузить файл как UploadFile, прочитать содержимое, сохранить его на диск с правильным расширением, передать этот путь в библиотеку https://github.com/microsoft/markitdown, прочитать эту уценку. файл еще раз, а затем передайте его в Редис. Слишком много операций ввода-вывода.
Есть ли способ сделать все это в памяти?
(Ради простоты кода я удалил всю обработку ошибок и предполагаю, что только текст файлы)
@router.post("/upload")
async def uploadPost(filepond: UploadFile = File()):
"""
Convert a textual file to markdown.
Store in Redis
"""
# Create a temporary file to save the uploaded content
# for sake of simplicity I use txt for everything
with NamedTemporaryFile(delete=False,suffix=".txt") as temp_file:
temp_file_path = temp_file.name
content = await filepond.read()
temp_file.write(content)
temp_file.close()

md = MarkItDown()
result = md.convert(temp_file_path)
redis.setex("some key", 3600, result.text_content)

os.remove(temp_file_path)



Подробнее здесь: https://stackoverflow.com/questions/793 ... wn-library
Ответить

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

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

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

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

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