python - 使用 mmap 增加文件的大小

标签 python linux mmap memory-mapped-files

在 Windows 上的 Python 中,我可以通过以下方式创建一个大文件

    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 GB。但是,在 Linux 上,这将返回 ValueError: mmap length is greater than file size

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

最佳答案

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

如果你想增加一个文件,只需在 mmap() 之前 ftruncate() 即可。

关于python - 使用 mmap 增加文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393288/

相关文章:

python - 在python中使用分隔符拆分字符串

python - 如何将自定义元素列表正确传递给类属性?

linux - Docker、创建实例时 docker-compose 失败、运行时失败

c - 线程的 mmap 中 MAP_PRIVATE 和 MAP_SHARED 之间的区别

Python 按日期和时间对 CSV 进行排序

python - 以 IP 地址作为参数的函数调用

linux - 如何优雅地将 runmqsc 命令的输出放入适当的 PHP 变量中?

linux - 嵌套函数和 while 循环在 bash 中返回 `while: command not found`

c - 通过/dev/mem读写进程内存,text段可以,data段不行,为什么?

c - 解析内存映射文件C