Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

Python mmap的使用-文件内存映射

$
0
0

mmap是一种虚拟内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。

优点: 普通文件被映射到虚拟地址空间后,程序可以向访问普通内存一样对文件进行访问,在有些情况下可以提高IO效率 它占用物理内存空间少,可以解决内存空间不足的问题,适合处理超大文件

mmap在windowslinux平台上的行为有所不同。例如,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()
Python mmap的使用-文件内存映射
写操作 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()
Python mmap的使用-文件内存映射

内存映射文件可以像字符串一样操作,我们可以在其上应用正则表达式。

参考文档: https://docs.python.org/3.5/library/mmap.html

Share the post "Python mmap的使用-文件内存映射"

Google+ Weibo Email

Viewing all articles
Browse latest Browse all 9596

Trending Articles