如何复制两个mmap之间的特定范围?

How to copy a specific range between two mmap?

如何通过切片将一个 mmap 的特定部分复制到另一个 mmap 中?

#!/usr/bin/python3

import mmap

a = mmap.mmap(-1, 5)
b = mmap.mmap(-1, 5)

a[0:] = b'12345'
b[0:] = b'67890'

a[2:6] = b[0:4]

print(a[:])

有没有办法通过切片复制这样的范围?如果这不可能,还有哪些其他解决方案?

我认为您一定遇到了以下错误:

IndexError: mmap slice assignment is wrong size

a[2:6] = b[0:4]改为

a[1:5] = b[0:4]

输出:

b'16789' # print(a[:])

虽然不是很清楚您的期望,但上面的代码将不起作用,因为您使用的范围无效。调用 a[2:6] 将 return 大小为三的切片,(即它将 return a[2:5] 因为 a[6] 实际上不存在)导致错误 IndexError: mmap slice assignment is wrong size

a[1:5] = b[0:4] 试试 运行 这个。这产生:

print(a[:])
b'16789'