(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 15 12modules '
43 small
3.143.239.103