I don't think this is possible. The usual way is to write and close, then read. If you want to write again, just overwrite the memfile
object.
For example:
from rasterio.io import MemoryFile
import rasterio
import numpy as np
def create_memory_file(data, west_bound, north_bound, cellsize, driver='GTIFF'):
#data is a numpy array
dtype = data.dtype
shape = data.shape
transform = rasterio.transform.from_origin(west_bound, north_bound, cellsize, cellsize)
with MemoryFile() as memfile:
with memfile.open(
driver=driver, width= shape[1], height = shape[0],
transform=transform, count=1, dtype=dtype) as dataset:
dataset.write(data, 1)
return memfile.open() # <==== Re-open the memfile
data = np.array([[1,2,3], [4,5,6], [7,8,9]]).astype(np.int32)
memfile = create_memory_file(data, 0, 2, 0.5)
print(memfile.read())
data = np.array([[4,5,6], [7,8,9], [10,11, 12]]).astype(np.int32)
memfile = create_memory_file(data, 0, 2, 0.5)
print(memfile.read())
Output:
[[[1 2 3]
[4 5 6]
[7 8 9]]]
[[[ 4 5 6]
[ 7 8 9]
[10 11 12]]]