python流式下载处理_文件zip打包,流式下载python 代码

使用方法:

输入地址:例如http://0.0.0.0:8000?abc,def

#!usr/bin/python #coding=utf-8 import uuid import os import zipfile import re import sys import officetoimage import rarfile import tarfile import subprocess from cherrypy import wsgiserver import time import threading ########SET CODE TO DEAL CHINESE############ default_encoding = 'utf-8' if sys.getdefaultencoding()!=default_encoding:     reload(sys)     sys.setdefaultencoding(default_encoding)      def app(environ,start_response):     out = 'tmp/'+str(uuid.uuid1())+'.zip'     status = '200 OK'     filename = 'test.zip'     response_header  = [('Content-type','application/'+out),('Content-disposition','attachment;filename='+filename)]     start_response(status,response_header)     #dict_e = get_environ()     filename_list = environ['QUERY_STRING'].split(',')     if os.path.exists('tmp') is not True:         os.makedirs('tmp',0755)                      position = 0     flag = True          archive = zipfile.ZipFile(out,'a',zipfile.ZIP_DEFLATED)     strs = open(out,'rb')     for filename in filename_list:                  if os.path.isfile(filename):             archive.write(filename)             strs.seek(position)             result = strs.read()             position = strs.tell()             yield result         else:                         for root,dirs,files in os.walk(filename):                 for file in files:                                         archive.write(os.path.join(root,file))                                         strs.seek(position)                     result = strs.read()                     position = strs.tell()                     yield result     archive.close()     strs.seek(position)     result = strs.read()     position = strs.tell()     yield result     return if __name__ == '__main__':      server = wsgiserver.CherryPyWSGIServer(('0.0.0.0',8000),app)     server.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值