16

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
  • 864
  • 2
  • 15
  • 30

1 Answers1

26

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
  • 979
  • 8
  • 14