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

时间:2019-06-18 10:58:31

标签: python slice 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[:])

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

2 个答案:

答案 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'
相关问题