使用mmap增加文件的大小

在Windows上的Python中,我可以通过创build一个大文件

from mmap import mmap f = open('big.file', 'w') f.close() f = open('big.file', 'r+') m = mmap(f.fileno(), 10**9) 

现在big.file是(大约)1千兆字节。 但在Linux上,这将返回ValueError: mmap length is greater than file size

有没有办法像在Windows上一样在Linux上获得相同的行为? 也就是说,能够使用mmap增加文件的大小?

至少在POSIX系统上, mmap()不能用于增加(或减小)文件的大小。 mmap()的功能是内存映射文件的一部分。 这是合乎逻辑的,你要求映射的东西实际上应该存在! 坦率地说,我真的很惊讶,你真的能够在MS Windows下做到这一点。

如果你想生长一个文件,只需在mmap()之前使用ftruncate()