Python mmap 'Permission denied' on Linux Python mmap 'Permission denied' on Linux python python

Python mmap 'Permission denied' on Linux


I think its a flags issue, try opening as read only:

mfd = os.open('BigFile', os.O_RDONLY)

and mmap.mmap by default tries to map read/write, so just map read only:

mfile = mmap.mmap(mfd, 0, prot=mmap.PROT_READ)


Try setting the file mode to r+. That worked for me on Linux:

mfd = os.open('BigFile', "r+")

Then this worked for me as normal:

mfile = mmap.mmap(mfd, 0)


In my case this error occurred because I was attempting to open a block device without specifying an explicit size.

FWIW you cannot use os.stat / os.fstat with a block device to obtain the device's size (which is always 0), but you can use file.seek and file.tell:

f = file("/dev/loop0", "rb")f.seek(0, 2)  # Seek relative to end of filesize = f.tell()fh = f.fileno()m = mmap.mmap(f, size, mmap.MAP_PRIVATE, mmap.PROT_READ)