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

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

1. 优点

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

2. 安装命令

pip install mmap

3. 基本操作方法

3.1 读操作

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()

3.2 写操作

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值