Python Flask:发送一个zip文件,然后将其删除

Python Flask:发送一个zip文件,然后将其删除,python,flask,zip,zipfile,Python,Flask,Zip,Zipfile,我在一个flask应用程序中工作,该应用程序从web服务器中的文件夹中获取多个文件,并创建一个包含这些文件的zip文件,以最终将该zip文件发送给用户。我的问题是,在发送zip文件后,我无法将其从web服务器中删除 我已经尝试在请求后使用@命令来解决这个问题 这里我展示了我编写的代码的简化版本。我发送先前创建的zip文件,然后尝试将其删除 @app.route(“/sendFile”) def sendFile(): @在这个请求之后 def removeFile(响应): 删除操作系统(压缩路

我在一个flask应用程序中工作,该应用程序从web服务器中的文件夹中获取多个文件,并创建一个包含这些文件的zip文件,以最终将该zip文件发送给用户。我的问题是,在发送zip文件后,我无法将其从web服务器中删除

我已经尝试在请求后使用
@命令来解决这个问题

这里我展示了我编写的代码的简化版本。我发送先前创建的zip文件,然后尝试将其删除

@app.route(“/sendFile”)
def sendFile():
@在这个请求之后
def removeFile(响应):
删除操作系统(压缩路径)
返回响应
从_目录返回发送_(路径,文件名=zipname,as_attachment=True)
问题是出现了一个错误,表示无法删除zip文件,因为其他进程仍在使用它。我在其他类型的文件中看到过类似的问题:


但是,它们在我的zip文件中不起作用。

您可以将文件读取为字节,删除zip,然后使用flask.response流式传输响应。类似的方法可能会奏效:

来自flask导入响应的

@app.route(“/sendFile”)
def sendFile():
将open(os.path.join(path,zipname),'rb')作为f:
数据=f.读线()
os.remove(os.path.join(path,zipname))
返回响应(数据、标题)={
“内容类型”:“应用程序/zip”,
“内容处置”:“附件;文件名=%s;'%zipname”
})

您可以将文件读取为字节,删除zip,然后使用flask.response流式传输响应。类似的方法可能会奏效:

来自flask导入响应的

@app.route(“/sendFile”)
def sendFile():
将open(os.path.join(path,zipname),'rb')作为f:
数据=f.读线()
os.remove(os.path.join(path,zipname))
返回响应(数据、标题)={
“内容类型”:“应用程序/zip”,
“内容处置”:“附件;文件名=%s;'%zipname”
})

非常感谢!!你的回答真的很有帮助,这正是我需要的。非常感谢!!你的回答真的很有帮助,这正是我需要的。