二进制文件内存映射

点击查看代码
# 对二进制文件做内存映射
# 使用 mmap 模块对文件进行内存有映射操作
import mmap
import os.path


def memory_map(filename, access=mmap.ACCESS_WRITE):
    """

    :param filename:
    :param access: mmap.ACCESS_WRITE: 读写
                   mmap.ACCESS_READ:  只读
                   mmap.ACCESS_COPY: 更改不会保存到原文件
    :return:
    """
    size = os.path.getsize(filename)
    fd = os.open(filename, os.O_RDWR)
    return mmap.mmap(fd, size, access=access)


# make test data
size = 100000
with open("data", "wb") as f:
    f.seek(size - 1)
    f.write(b"\x00")

# test
with memory_map("data") as m:
    print(len(m))  # 100000
    print(m[:10])  # b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    print(m[0])  # 0
    m[0:11] = b"Hello World"

# verify
with open("data", "rb") as f:
    print(f.read(11))  # b'Hello World'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值