Python: read file(BinaryIO) multiple time#
Recently, I need to read BinaryIO
object multiple time when handling Minio
file.
solution : seek(0)
#
The reason is that the cursor of BinaryIO
object will stay at the end of the file after reading it.
So, we need to reset the cursor by seek(0)
.
f = open(f)
content = f.read()
f.seek(0) # reset !!!!
content = f.read()
Read UploadFile
object multiple time in FastAPI
#
Because UploadFile
object in FastAPI
also encapsulates BinaryIO
object.
We can also reset the cursor by seek(0)
.
from fastapi import FastAPI, UploadFile, status
def file_service(upload_file: UploadFile):
content = upload_file.file.read() # first read
another_file_service(upload_file)
return status.HTTP_200_OK
def another_file_service(upload_file: UploadFile):
upload_file.file.seek(0) # need to reset cursor !!!!
content = upload_file.file.read() # third read
reference#
https://stackoverflow.com/questions/3906137/why-cant-i-call-read-twice-on-an-open-file