| \section{\module{mmap} --- |
| Memory-mapped file support} |
| |
| \declaremodule{builtin}{mmap} |
| \modulesynopsis{Interface to memory-mapped files for Unix and Windows.} |
| |
| Memory-mapped file objects behave like both mutable strings and like |
| file objects. You can use mmap objects in most places where strings |
| are expected; for example, you can use the \module{re} module to |
| search through a memory-mapped file. Since they're mutable, you can |
| change a single character by doing \code{obj[ \var{index} ] = 'a'}, or |
| change a substring by assigning to a slice: |
| \code{obj[ \var{i1}:\var{i2} ] = '...'}. You can also read and write |
| data starting at the current file position, and \method{seek()} |
| through the file to different positions. |
| |
| A memory-mapped file is created by the following function, which is |
| different on Unix and on Windows. |
| |
| \begin{funcdesc}{mmap}{fileno, length \optional{, tagname} } |
| (Windows version) Maps \var{length} bytes from the file specified by |
| the file handle \var{fileno}, and returns a mmap object. If you wish |
| to map an existing Python file object, use its \method{fileno()} |
| method to obtain the correct value for the \var{fileno} parameter. |
| |
| \var{tagname}, if specified, is a string giving a tag name for the mapping. |
| Windows allows you to have many different mappings against the same |
| file. If you specify the name of an existing tag, that tag is opened, |
| otherwise a new tag of this name is created. If this parameter is |
| None, the mapping is created without a name. Avoiding the use of the |
| tag parameter will assist in keeping your code portable between Unix |
| and Windows. |
| \end{funcdesc} |
| |
| \begin{funcdesc}{mmap}{fileno, size \optional{, flags, prot}} |
| (Unix version) Maps \var{length} bytes from the file specified by the |
| file handle \var{fileno}, and returns a mmap object. If you wish to |
| map an existing Python file object, use its \method{fileno()} method |
| to obtain the correct value for the \var{fileno} parameter. |
| |
| \var{flags} specifies the nature of the mapping. |
| \code{MAP_PRIVATE} creates a private copy-on-write mapping, so |
| changes to the contents of the mmap object will be private to this |
| process, and \code{MAP_SHARED} creates a mapping that's shared |
| with all other processes mapping the same areas of the file. |
| The default value is \code{MAP_SHARED}. |
| |
| \var{prot}, if specified, gives the desired memory protection; the two |
| most useful values are \code{PROT_READ} and \code{PROT_WRITE}, to |
| specify that the pages may be read or written. |
| \var{prot} defaults to \code{PROT_READ | PROT_WRITE}. |
| \end{funcdesc} |
| |
| Memory-mapped file objects support the following methods: |
| |
| |
| \begin{methoddesc}{close}{} |
| Close the file. Subsequent calls to other methods of the object |
| will result in an exception being raised. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{find}{\var{string} \optional{, \var{start}}} |
| Returns the lowest index in the object where the substring \var{string} is |
| found. Returns \code{-1} on failure. |
| \var{start} is the index at which the search begins, and defaults to zero. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{flush}{\optional{\var{offset}, \var{size}}} |
| Flushes changes made to the in-memory copy of a file back to disk. |
| Without use of this call there is no guarantee that changes are |
| written back before the object is destroyed. If \var{offset} and |
| \var{size} are specified, only changes to the given range of bytes |
| will be flushed to disk; otherwise, the whole extent of the mapping is |
| flushed. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{move}{\var{dest}, \var{src}, \var{count}} |
| Copy the \var{count} bytes starting at offset \var{src} |
| to the destination index \var{dest}. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{read}{\var{num}} |
| Return a string containing up to \var{num} bytes starting from the |
| current file position; the file position is updated to point after the |
| bytes that were returned. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{read_byte}{} |
| Returns a string of length 1 containing the character at the current |
| file position, and advances the file position by 1. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{readline}{} |
| Returns a single line, starting at the current file position and up to |
| the next newline. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{resize}{\var{newsize}} |
| \end{methoddesc} |
| |
| \begin{methoddesc}{seek}{\var{pos} \optional{, \var{whence}}} |
| Set the file's current position. |
| \var{whence} argument is optional and defaults to \code{0} |
| (absolute file positioning); other values are \code{1} (seek |
| relative to the current position) and \code{2} (seek relative to the |
| file's end). |
| \end{methoddesc} |
| |
| \begin{methoddesc}{size}{} |
| Return the length of the file, which can be larger than the size |
| of the memory-mapped area. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{tell}{} |
| Returns the current position of the file pointer. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{write}{\var{string}} |
| Write the bytes in \var{string} into memory at the current position of |
| the file pointer; the file position is updated to point after the |
| bytes that were written. |
| \end{methoddesc} |
| |
| \begin{methoddesc}{write_byte}{\var{byte}} |
| Write the single-character string \var{byte} into memory at the current position of |
| the file pointer; the file position is advanced by 1. |
| \end{methoddesc} |
| |
| |