首页 > 解决方案 > 如何编写上传大于 RAM 的文件的 Python 代码?

问题描述

我有一个 1 GB ram 的 vps,我想通过 curl 和 python 发送一个大文件(2GB)。

python给出MemoryLimit错误但curl发送文件没有问题并且使用非常低的内存。

卷曲是如何做到的?

我如何在使用低内存的 Http 发布请求中发送一个非常大的文件?

标签: python

解决方案


您可能已将所有文件数据加载到内存中,然后尝试发送。这显然会导致 MemoryLimit 错误。

您可以尝试使用mmap 模块。示例代码如下:

import requests
import mmap

with open("hello.txt", "r+b") as f:
    # memory-map the file, size 0 means whole file
    mm = mmap.mmap(f.fileno(), 0)
    r = requests.post(URL, data=mm)
    print(r.status_code, r.reason)
    mm.close()

推荐阅读