Как скопировать определенный диапазон между двумя mmap? - PullRequest
0 голосов
/ 18 июня 2019

Как можно копировать только определенную часть одного 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 голосов
/ 18 июня 2019

Хотя не совсем понятно, что вы ожидаете, приведенный выше код не будет работать, поскольку вы используете недопустимый диапазон.Вызов a[2:6] вернет срез третьего размера (т.е. он вернет a[2:5], поскольку a[6] на самом деле не существует), что приведет к ошибке IndexError: mmap slice assignment is wrong size

Попробуйте выполнить это с a[1:5] = b[0:4],Это дает:

print(a[:])
b'16789'
0 голосов
/ 18 июня 2019

Я думаю, вы получите ошибку ниже:

IndexError: неправильный размер фрагмента mmap

изменить a[2:6] = b[0:4] на

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

выход:

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