每天CookBook之Python-082

  • 内存映射到二进制文件
import os
import mmap


def memory_map(filename, access=mmap.ACCESS_WRITE):
    size = os.path.getsize(filename)
    fd = os.open(filename, os.O_RDWR)
    return mmap.mmap(fd, size, access=access)

size = 1000000
with open('data', 'wb') as f:
    f.seek(size-1)
    f.write(b'\x00')

m = memory_map('data')
len(m)

print(m[0:10])
print(m[0])

m[0:11] = b'Hello World'
m.close()

with open('data', 'rb') as f:
    print(f.read(11))

with memory_map('data') as m:
    print(len(m))
    print(m[0:10])

out

b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
0
b'Hello World'
1000000
b'Hello Worl'
posted @ 2016-07-24 17:00  4Thing  阅读(88)  评论(0编辑  收藏  举报