Python 如何在上传过程中不将整个文件加载到内存中

Python 如何在上传过程中不将整个文件加载到内存中,python,bottle,Python,Bottle,我使用创建一个上传API。下面的脚本能够将文件上载到目录,但我需要解决两个问题。一个是如何避免将整个文件加载到内存中,另一个是如何设置上载文件的最大大小 是否可以连续读取文件并转储已读取到文件的内容,直到上传完成?upload.save(file\u path,overwrite=False,chunk\u size=1024)函数似乎将整个文件加载到内存中。在本教程中,他们指出使用.read() 我也试过写一个file.write,但都是一样的。文件正在被读取到内存,它将挂起计算机 file_

我使用创建一个上传API。下面的脚本能够将文件上载到目录,但我需要解决两个问题。一个是如何避免将整个文件加载到内存中,另一个是如何设置上载文件的最大大小

是否可以连续读取文件并转储已读取到文件的内容,直到上传完成?
upload.save(file\u path,overwrite=False,chunk\u size=1024)
函数似乎将整个文件加载到内存中。在本教程中,他们指出使用
.read()

我也试过写一个file.write,但都是一样的。文件正在被读取到内存,它将挂起计算机

file_to_write = open("%s" %(output_file_path), "wb") 
while True:
    datachunk = upload.file.read(1024)
    if not datachunk:
        break
    file_to_write.write(datachunk)
与此相关,我已经看到了一些人声称可以设置最大文件上传大小的属性。我尝试过设置它,但似乎没有任何效果,因为所有文件无论大小都会通过

请注意,我希望能够接收office文档,该文档可以是带有扩展名的简单文档,也可以是带有密码的压缩文档


使用Python3.4和瓶子0.12.7,基本上,您希望在循环中调用
upload.read(1024)
。类似这样(未经测试):

(不要在
upload
上调用
open
;它已经为您打开了。)


包括更多关于如何读取大文件而不“咕噜咕噜”的示例。

我正在尝试运行
f=open(upload.file)
,但遇到类型错误
无效文件:
。我面临的挑战是如何将上传文件
upload=request.files.get(“upload_file”)
转换为可以使用
open(“really_big_file”)读取的文件
您不应该在
upload.file
上调用
open
;它已经是一个类似文件的对象,可供您使用。只是从中读取。@b4hand,我调用
open
创建目标文件,而不是从
upload
读取。lukik,你能解决这个问题吗?嗨,不。尽管有下面的建议,它仍然将整个文件加载到内存中。最后,我为客户端安装了一个SFTP框,以便进行连接,但我仍然需要让它正常工作,因为我需要控制上传过程。。有什么新建议吗?
file_to_write = open("%s" %(output_file_path), "wb") 
while True:
    datachunk = upload.file.read(1024)
    if not datachunk:
        break
    file_to_write.write(datachunk)
with open(file_path, 'wb') as dest:
    chunk = upload.read(1024)
    while chunk:
        dest.write(chunk)
        chunk = upload.read(1024)