The mmap Module
(New in 2.0) The mmap
module provides an interface to the operating
system’s memory mapping functions, as shown in Example 2-13. The mapped region behaves like a string object, but data is read directly from the file.
Example 2-13. Using the mmap Module
File: mmap-example-1.py import mmap import os filename = "samples/sample.txt" file = open(filename, "r+") size = os.path.getsize(filename) data = mmap.mmap(file.fileno(), size) # basics print data print len(data), size # use slicing to read from the file print repr(data[:10]), repr(data[:10]) # or use the standard file interface print repr(data.read(10)), repr(data.read(10))<mmap object at 008A2A10>
302 302
'We will pe' 'We will pe'
'We will pe' 'rhaps even'
Under Windows, the file must currently be opened for both reading and
writing (r+
, or w+
), or the
mmap
call will fail.
Example 2-14 shows that memory mapped regions can be used instead of ordinary strings in many places, including regular expressions and many string operations.
Example 2-14. Using String Functions and Regular Expressions on a Mapped Region
File: mmap-example-2.py
import mmap
import os, string, re
def mapfile(filename):
file = open(filename, "r+")
size = os.path.getsize(filename)
return mmap.mmap(file.fileno(), size)
data = mapfile("samples/sample.txt")
# search
index = data.find("small")
print index, repr(data[index-5:index+15])
# regular expressions work too!
m = re.search("small", data)
print m.start(), m.group()
43 'only small\015\012modules ...
Get Python Standard Library now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.