mmap是一种虚拟内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。
优点:
mmap在Windows和Linux平台上的行为有所不同。例如,Windows不支持创建空映射。
Python通过mmap模块支持文件内存映射,文档:https://docs.python.org/3.5/library/mmap.html。
import mmap
f = open('test.txt', 'r') # r->读
""" mmap用来创建内存映射文件
第一个参数是文件描述符
第二个参数是映射长度,0代表整个文件
第三个参数是访问模式,ACCESS_READ:读;ACCESS_WRITE:写:
ACCESS_COPY:写时复制,不会把更改写入到文件,使用flush把更改写到文件
"""
with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as m:
print('读取前10个字节 :', m.read(10))
print('还可以像操作字符串一样操作:', m[:10])
print('下一个10字节 :', m.read(10))
# mm.close()
f.close()
import mmap
word = b'World'
reversed = word[::-1]
print('查找:', word)
print('替换:', reversed)
with open('test.txt', 'r+') as f: # r+,不是w
with mmap.mmap(f.fileno(), 0) as m:
m.seek(0) # 定位到文件头
loc = m.find(word)
m[loc:loc + len(word)] = reversed
m.flush()
内存映射文件可以像字符串一样操作,我们可以在其上应用正则表达式。
来源:http://blog.topspeedsnail.com/archives/10036#more-10036