23

I have a bytearray and want to convert into a buffered reader. A way of doing it is to write the bytes into a file and read them again.

sample_bytes = bytes('this is a sample bytearray','utf-8')
with open(path,'wb') as f:
    f.write(sample_bytes)
with open(path,'rb') as f:
    extracted_bytes = f.read()
print(type(f))

output:

<class '_io.BufferedReader'>

But I want these file-like features without having to save bytes into a file. In other words I want to wrap these bytes into a buffered reader so I can apply read() method on it without having to save to local disk. I tried the code below

from io import BufferedReader
sample_bytes=bytes('this is a sample bytearray','utf-8')
file_like = BufferedReader(sample_bytes)
print(file_like.read())

but I'm getting an attribute error

AttributeError: 'bytes' object has no attribute 'readable'

How to I write and read bytes into a file like object, without saving it into local disc ?

Uchiha Madara
  • 984
  • 5
  • 16
  • 35

1 Answers1

36

If all you are looking for is an in-memory file-like object, I would be looking at

from io import BytesIO
file_like = BytesIO(b'this is a sample bytearray')
print(file_like.read())
EdJoJob
  • 1,139
  • 9
  • 15