python后端编写打包大文件夹接口,并将打包结果实时返回给前端
时间: 2023-08-16 10:07:02 浏览: 101
你可以使用Python的zipfile模块来打包大文件夹,然后使用Flask框架来编写接口,将打包结果实时返回给前端。
以下是一个简单的示例代码:
```python
import zipfile
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/pack')
def pack():
# 将要打包的文件夹路径
folder_path = '/path/to/folder'
# 打包后的文件名
zip_name = 'packed.zip'
# 创建ZipFile对象
zip_file = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
# 遍历文件夹,并将文件添加到zip文件中
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
zip_file.write(file_path, file)
# 关闭ZipFile对象
zip_file.close()
# 将打包结果实时返回给前端
return send_file(zip_name, as_attachment=True)
```
在上面的示例代码中,我们先定义了一个`/pack`的路由,当前端访问该路由时,会自动执行`pack`函数。在`pack`函数中,我们首先指定了要打包的文件夹路径和打包后的文件名,然后创建了一个ZipFile对象,并使用`os.walk`遍历了文件夹中的所有文件,将它们添加到zip文件中。最后,我们通过`send_file`函数将打包结果实时返回给前端。
需要注意的是,由于打包大文件夹可能会比较耗时,所以最好将该函数放在后台执行,并使用WebSocket等技术将打包进度实时返回给前端。
阅读全文