Open a raster file with read and write permissions in rasterio

Amine Aboufirass

I have already asked this question in GIS stack exchange  and stack overflow but received no response:
I am trying to write a function which will help me construct a `rasterio` memory file and return the dataset reader object so I can then play around with it as needed. I am trying to avoid `with` statements because I would like to allow the user to read and write as they deem necessary. This is what I have so far:
    from rasterio import mask, features, warp
    from import MemoryFile
    import rasterio
    import numpy as np
    def create_memory_file(data, west_bound, north_bound, cellsize, driver='AAIGrid'):
        #data is a numpy array
        dtype = data.dtype
        shape = data.shape
        transform = rasterio.transform.from_origin(west_bound, north_bound, cellsize, cellsize)
        memfile = MemoryFile()
        dataset =, width= shape[1], height = shape[0], transform=transform, count=1, dtype = dtype)
        return dataset
    def close_memory_file(memfile):
    data = np.array([[1,2,3], [4,5,6], [7,8,9]])
    memfile = create_memory_file(data, 0, 2, 0.5)
The last line throws an error:
    Traceback (most recent call last):
      File "D:/11202750-002_RA2CE/Basis/", line 214, in <module>
      File "rasterio\_io.pyx", line 209, in
    rasterio.errors.UnsupportedOperation: not readable
The memfile apparently only has write permissions because of the following:
    >>> memfile
    <open BufferedDatasetWriter name='/vsimem/3c0572dd-a295-4f2b-a65d-22a404dd5d0f.' mode='w'>
    >>> memfile.mode
I have tried various combinations of adding `mode=r+`, `permissions=r+` to my `` call but it won't allow this.
How can I add the read/write mode at the level of the `open` statement?

Join to automatically receive all group messages.