怎么可能只通过切片将一个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[:])
有没有办法通过切片复制这样的范围?如果这不可能,还有什么其他解决方案?
答案 0 :(得分:0)
我认为您一定会遇到错误:
IndexError:mmap切片分配大小错误
将a[2:6] = b[0:4]
更改为
a[1:5] = b[0:4]
输出:
b'16789' # print(a[:])
答案 1 :(得分:0)
虽然目前尚不清楚您的期望,但是上面的代码将无法正常工作,因为您使用的范围无效。调用a[2:6]
将返回一个大小为3的切片(即由于a[2:5]
实际上不存在,它将返回a[6]
),从而导致错误IndexError: mmap slice assignment is wrong size
尝试使用a[1:5] = b[0:4]
运行它。这样产生:
print(a[:])
b'16789'