每天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'