Python压缩解压zip,Django下载zip文件
【摘要】 Python压缩解压zip压缩import zipfiledef convert_zip(zip_path, save_path): ''' # zip_path 要压缩文件的路径 # save_path 文件压缩后保存的路径 ''' local_path = os.path.join(zip_path, "x.xls") zip = zipfile.Z...
Python压缩解压zip
-
压缩
import zipfile def convert_zip(zip_path, save_path): ''' # zip_path 要压缩文件的路径 # save_path 文件压缩后保存的路径 ''' local_path = os.path.join(zip_path, "x.xls") zip = zipfile.ZipFile(save_path, "w") # zipfile.ZIP_DEFLATED zip.write(local_path, 'x.xls') zip.close() convert_zip(zip_path, save_path)
-
解压缩
def unzip(file_path, save_path): """ zip文件解压缩 :param file_path: 要解压的文件 :param save_path: 解压后的文件保存目录 """ zfile = zipfile.ZipFile(file_path) for filename in zfile.namelist(): data = zfile.read(filename) f = open(os.path.join(save_path, filename), 'w+b') f.write(data) f.close()
Django下载zip文件
-
Django使用临时文件夹tempfile下载其他文件,并压缩为zip文件返回给前端
-
使用
BytesIO()
和tempfile
下载import io def contract_download(download_urls): ''' downloads_urls 要批量下载并且压缩的文件 ''' # 创建BytesIO s = io.BytesIO() # 创建一个临时文件夹用来保存下载的文件 temp = tempfile.TemporaryDirectory() # 使用BytesIO生成压缩文件 zip = zipfile.ZipFile(s, 'w') for i in download_urls: f_name = "{}.pdf".format(i['name']) local_path = os.path.join(temp.name, f_name) # 下载文件 ur.urlretrieve(i['download_url'], local_path) # 把下载文件的写入压缩文件 zip.write(local_path, f_name) # 关闭文件 zip.close() # 指针回到初始位置,没有这一句前端得到的zip文件会损坏 s.seek(0) # 用FileWrapper类来迭代器化一下文件对象,实例化出一个经过更适合大文件下载场景的文件对象,实现原理相当与把内容一点点从文件中读取,放到内存,下载下来,直到完成整个下载过程。这样内存就不会担心你一下子占用它那么多空间了。 wrapper = FileWrapper(s) response = HttpResponse(wrapper, content_type='application/zip') response['Content-Disposition'] = 'attachment; filename={}.zip'.format(datetime.datetime.now().strftime("%Y-%m-%d")) return response download_urls = [{"name":"pdf1","download_url": "http://xxx.pdf"}, {"name":"pdf2", "download_url": "http://xxx2.pdf"}] contract_download(download_urls)
参考链接:Django下载zip文件
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)