如何复制两个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'
如何通过切片将一个 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'