Python mmap 'Permission denied' on Linux

tMC picture tMC · Jun 9, 2011 · Viewed 15.4k times · Source

I have a really large file I'm trying to open with mmap and its giving me permission denied. I've tried different flags and modes to the os.open but its just not working for me.

What am I doing wrong?

>>> import os,mmap
>>> mfd = os.open('BigFile', 0)
>>> mfile = mmap.mmap(mfd, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
mmap.error: [Errno 13] Permission denied
>>> 

(using the built in open() works via the python docs example, but it seems to open more than one handle to the file both in read & write mode. All i need for the mmap.mmap method is the file number, so I wouldn't assume i need to create a file object; hence my attempt at using os.open())

Answer

Bobby Powers picture Bobby Powers · Jun 9, 2011

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)