Python中mmap函数的使用示例

3 投票
1 回答
3026 浏览
提问于 2025-04-16 11:12

我在找一个用Python来内存映射一个1GB文件的例子。有没有人能给我一个可以用的例子呢?

这个文件可以是任何随机的文本。我只是想看看怎么正确地做到这一点...

1 个回答

4

这里有一个例子,可以帮助你理解在Python中如何使用mmap(适用于3.0及以上版本)。

下面的代码打开一个文件,然后将其映射到内存中。它使用了映射文件的readline()方法,演示了这个方法和标准文件一样好用。接着,它读取和写入映射文件的一部分内容(这种方式同样有效,可以访问映射文件的内容,而且不会改变文件指针的位置)。最后,文件指针被重新放回到开头,然后读取(更新后的)内容。(这里的“14”是write()函数的返回值,它总是返回写入的字节数。)

>>> with open("myfile.txt", "wb") as f:
... f.write(b"Hello Python!\n")

>>> import mmap
>>> with open("myfile.txt", "r+b") as f:
... mapf = mmap.mmap(f.fileno(), 0)
... print(mapf.readline()) # prints b"Hello Python!\n"
... print(mapf[:5]) # prints b"Hello"
... mapf.tell()
... mapf[6:] = b" world!\n"
... mapf.seek(0)
... print(mapf.readline()) # prints b"Hello world!\n"
... mapf.close()
...
b'Hello Python!\n'
b'Hello'
14
b'Hello world!\n'

撰写回答