0

Python, I have saved my model as joblib file in a location, the I open the file in 'rb' read bytes, is it possible to convert straight to bytes instead of saving in a file,

import joblib
joblib.dump(model, 'model.joblib')
#Read as bytes
model_bytes = open('C:/Models/model.joblib','rb').read()
model_bytes
#This outputs like 
b'\x80\x03csklearn.ensemble.forest\nRandomForestClassifier\nq\x00)\x81q\x01}q\x...…..

Here I don't want to save in a location, so I tried with tempfile, but this will not work I knew, is there any other options

import tempfile
bytes_model = tempfile.TemporaryFile()
bytes_model.read(model)

#Also bytes function doesn't work
bytes_model = bytes(model)

I don't need a file to be created, so that I don't have to access it, Is it possible to read the model variable as bytes?

hanzgs
  • 1,498
  • 17
  • 44

1 Answers1

5

You should be able to use BytesIO for this if joblib.dump() doesn't complain.

Something like this may work for you:

from io import BytesIO
import joblib

bytes_container = BytesIO()
joblib.dump(model, bytes_container)
bytes_container.seek(0)  # update to enable reading

bytes_model = bytes_container.read()
monkut
  • 42,176
  • 24
  • 124
  • 155