Скорее всего, потому что w+
усекает файл, и Windows выдает ошибку при попытке создать пустое сопоставление из этого файла длины 0. Вместо этого используйте r+
.
Также вы не должныt use access=mmap.ACCESS_READ|mmap.ACCESS_WRITE
:
>>> mmap.ACCESS_READ
1
>>> mmap.ACCESS_WRITE
2
>>> mmap.ACCESS_COPY
3
>>> mmap.ACCESS_READ | mmap.ACCESS_WRITE
3
Другими словами, access=mmap.ACCESS_READ|mmap.ACCESS_WRITE
совпадает с access=mmap.ACCESS_COPY
.Скорее всего, вам нужно access=mmap.ACCESS_WRITE
, а в Windows это все равно, что вы получите, если не будете явно использовать этот аргумент.
Попробуйте:
import mmap
with file("o:/temp/mmap.test", "r+b") as fp:
m = mmap.mmap(fp.fileno(), 0)
m.write("Hello world!")
(mmap docs:http://docs.python.org/library/mmap.html)