python对zip流进行压缩和解压


字符串的压缩和解压

   处理前

{"result":"UEsDBBQACAgIAJdzvU4AAAAAAAAAAAAAAAADAAAAemlw5ZhdTxNBFIb\/SxMTSGgys7vdbr2DEK\/UxEsw3hSjiYIR14tSY9Jiq9uaQJEGtHyYFgs1EUGpDf2w\/Jmd3e0Vf8Gzu7SdnQLyYacXctGcvJml06fvOfNO77\/yhcPhqO+mb8I34nv8UB2zawz1k6cvZqF0quhLqO5C+UydjUCJZKjVsFMLGCt+JPpF7Gjth9RwdHp8enzG\/m8oiHBbYoU7UyC0NjbN0oKRrZBksRXLmdmSmT0w0kV7jarO3rPfBuGQH0l+90EQJylRRCBG5jqfY051P5O95blIV45MPVLDbT36PHqyn7HxUSRjjAIS6FE1MkPt8vUIB0KwAgVpQrTgEDIX9kjhjX60YaS\/ACqzdmC\/OpCsfGlozPxRHya7W7yZoZAie5lhgSMziWUmXZzZcUMbBWrHjRRvYuh6xG51iWFEEXN2GTiPWEgJyh5ilOAQM\/aXWqtl6EYrUyTaV7OeMOvv9EbO+p4nWoXUtq1ygaTzLkA\/qZZ7\/AZfGu6hp\/ix4O7rEvQmvPQmbzv0cCDE0Ltkj1L0aL+F4K+zyzPpSSw96er0jHWtj93aJ3rXOANEb7fSgktPy5DluPGzalQ0q1yFVuXbl0FRYdkI\/NjILBtPX5JkRa+vDAgMjKyBgZEwA0aSPMFBb8T1w5yRipHmKoCxB3p\/++qM5CCKLCKJn3dE1jsijaiV\/GBTGVBTSRILhpN3BIzgrTzxoCucDJwjvbbDH0kIM0jgFOflFczk8K7gIqnMGyufBmgXMTAwu2DM2KUruDN4\/TNZ3yeFTRJrnJom9cMYhEm7qC\/otfdgL1gPDiONGFlcMnMJ9xG9VmsVEqQZb8Xm4aLDPX\/KCjursMiPMWIZI5qx9Sth1DIM3SF3og\/3YOoNmqHOBq6NSVGCrBWDV8VEx\/S\/B004O0TPZZAWXCtWy5AmSfLAimfh+INMSZoxY6MIlMhS2nUj0JBhnZnSehz27zL6GTccQRjYaSh7hz4tuOjmS9Zygux+NL41IaMb8T0B3eDbgILUk6dkfngwiwefjyfwH9HBrHkwY579RWsnYZTynVNgAGHTzpssIX4\/ICjeAU4JVB5vrb0lawWS0Ui1Qt95YSzBSOrjPDr91isEPfMINo04JS5YEWBPvID3xPu9bWl20NLrW0ZqC17NRrlffmLwtO93PZcXDOP6wR9QSwcI7sfH6nQDAAAaFgAAUEsBAhQAFAAICAgAl3O9Tu7Hx"}
加密字符串

   处理后

[{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10701","sbzlDm":"10701","sbzlMc":"非税收入通","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0611054","zsxmDm":"10701"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"21107","sbzlDm":"21107","sbzlMc":"环境保护税纳表(B类)季报","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610986","zsxmDm":"10121"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"21104","sbzlDm":"21104","sbzlMc":"环境保护税表(A类)","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610980","zsxmDm":"10121"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"F","nsqx":"10","sbqx":"2019-05-31","sbrq":"","sbzlDlDm":"29876","sbzlDm":"29876","sbzlMc":"民间非营利组织会计制度财务报表-年报","sssqQ":"2018-01-01","sssqZ":"2018-12-31","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"Y","yzpzzlDm":"ZLA0610159","zsxmDm":"10101"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"F","nsqx":"06","sbqx":"9999-12-31","sbrq":"","sbzlDlDm":"29874","sbzlDm":"29874","sbzlMc":"民间非营利组财务报表-月报","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"Y","yzpzzlDm":"ZLA0610159","zsxmDm":"10101"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10304","sbzlDm":"10304","sbzlMc":"成品油费税","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610738","zsxmDm":"10102"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10306","sbzlDm":"10306","sbzlMc":"其他消费税","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610109","zsxmDm":"10102"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10416","sbzlDm":"10441","sbzlMc":"企业所月报","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0611033","zsxmDm":"10104"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10303","sbzlDm":"10303","sbzlMc":"酒类消费税","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610744","zsxmDm":"10102"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"21002","sbzlDm":"21002","sbzlMc":"房产税","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610791","zsxmDm":"10110"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10311","sbzlDm":"10311","sbzlMc":"涂料类消费税","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610735","zsxmDm":"10102"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"21112","sbzlDm":"21112","sbzlMc":"土地增值报表(一)","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610683","zsxmDm":"10113"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"21110","sbzlDm":"21110","sbzlMc":"资","sssqQ":"2019-01-01","sssqZ":"2019-03-31","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610887","zsxmDm":"10107"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"10","sbqx":"9999-12-31","sbrq":"","sbzlDlDm":"10437","sbzlDm":"10437","sbzlMc":"年度关联业务往来","sssqQ":"2018-01-01","sssqZ":"2018-12-31","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610922","zsxmDm":"10104"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10602","sbzlDm":"10602","sbzlMc":"储蓄20%","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610249","zsxmDm":"10106"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10601","sbzlDm":"10601","sbzlMc":"储利息5%","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610249","zsxmDm":"10106"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"10102","sbzlDm":"10102","sbzlMc":"小规模","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"N","yzpzzlDm":"BDA0610611","zsxmDm":"10101"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"F","nsqx":"10","sbqx":"2019-05-31","sbrq":"","sbzlDlDm":"29880","sbzlDm":"29880","sbzlMc":"企业","sssqQ":"2018-01-01","sssqZ":"2018-12-31","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"Y","yzpzzlDm":"ZLA0610272","zsxmDm":"29800"},{"bbbz":"Y","gdsBz":"1","jkrq":"","jkzt":"N","nsqx":"06","sbqx":"2118-03-31","sbrq":"","sbzlDlDm":"21150","sbzlDm":"21150","sbzlMc":"车船","sssqQ":"2019-04-01","sssqZ":"2019-04-30","xybz":"Y","ysbbz":"N","yxbz":"Y","yxcfsb":"Y","yzpzzlDm":"BDA0610133","zsxmDm":"10114"}]
明文字符串

 

处理方式有两种  一种是文件方式  一种是直接在内存中以二进制的方式直接进行处理

文件流方式处理

import base64
import json
import zipfile

file = open('11.txt', 'r', encoding='utf-8')
info = json.load(file)
# print(info["result"])
b=info["result"]
#
bytestream = base64.standard_b64decode(b)
print("----------bas64解码------------------------")
print(bytestream)

from io import StringIO
from io import BytesIO

print("-------------zip解压----------------")
fio = BytesIO(bytestream)
myzip = zipfile.ZipFile(file=fio)
print(myzip.read(myzip.namelist()[0]).decode("utf-8"))


StringIO和BytesIO的区别:
  StringIO是仅用于文本的内存中流.
  如果是字节实例就需要改用BytesIO.
文件流处理
import base64
import json
import zipfile

file = open('11.txt', 'r', encoding='utf-8')
info = json.load(file)
# print(info["result"])
b=info["result"]
#
bytestream = base64.standard_b64decode(b)
print("----------bas64解码------------------------")
print(bytestream)

from io import StringIO
from io import BytesIO

print("-------------zip解压----------------")
# fio = BytesIO(bytestream)
# myzip = zipfile.ZipFile(file=fio)
# print(myzip.read(myzip.namelist()[0]).decode("utf-8"))

with open("11.zip", "wb") as f:
    f.write(bytestream)

with zipfile.ZipFile("11.zip") as z:
    print(z.read(z.namelist()[0]).decode("utf-8"))
文件方式处理

 

开发实例

        if pageIndex == 1:
            res = self.es.search(body=body,scroll='1m',size=pageSize)
            scroll_size = res['hits']['total']
            scroll_id = res['_scroll_id']
        else:
            res = self.es.search(body=body, scroll='1m', size=pageSize)
            scroll_size = res['hits']['total']
            scroll_id = res['_scroll_id']
            while pageIndex -1 > 0:
             res = self.es.scroll(scroll_id=scroll_id, scroll='1m')
             pageIndex-=1

        reslist=[]
        for re in res["hits"]["hits"]:
            re = json.loads(json.dumps(re["_source"]))
            reslist.append({"csrq":self.formatDate(re["logtime"]),"yymc":re["appname"],"zt":re["success"],"ip":re["hostname"],"type":re["type"],"server":re["serviceId"],"sjz":re["waste_time"],"params":self.convert_base64_zip(re["params"]),"result":self.convert_base64_zip(re["result"])})
        data = {'code': 'SUCCESS', 'message': '', 'data': {"total":scroll_size,"list":reslist}}
        return data




 def convert_base64_zip(self,oldstr):
        try:
            bytestream = base64.standard_b64decode(oldstr)
            fio = BytesIO(bytestream)
            myzip = zipfile.ZipFile(file=fio)
            return myzip.read(myzip.namelist()[0]).decode("utf-8")
        except Exception as e:
            return "无法解析异常数据"
处理解码
from time import clock

 starttime = clock()
data = eslog.serviceLogsdata(appname,startTime,endTime,servicename,pageIndex,pageSize)
 endtime = clock()

print("耗时: %s秒" %(str(endtime-starttime)))
测试函数执行时间

 

其它实例

#二进制流不仅可以操作字符串 还可以是任何类型的文件数据

from io import BytesIO
pp = Image.open(BytesIO(response.content))



from PIL import Image
import os, sys
import requests
from io import StringIO

url = "https://cdn.discordapp.com/avatars/247096918923149313/34a66572b9339acdaa1dedbcb63bc90a.png?size=256"
response = requests.get(url)
pp = Image.open(StringIO(response.content))
pp = Image.open(BytesIO(response.content))
pp.save("image1.png")

pp = Image.open("image2c.png").convert("LA")
pp.save("image2c.png")

background = Image.open("image1.png").convert("RGBA")
foreground = Image.open("image2c.png").convert("RGBA")
foreground = foreground.resize((256, 256), Image.BILINEAR)
background.paste(foreground, (125, 325), foreground)
background.show()
View Code

 

python实现对键是否存在的判断

       reslist=[]
        for re in res["hits"]["hits"]:
            re = json.loads(json.dumps(re["_source"]))
            reslist.append({"logtime":self.formatDate(re["logtime"]),"appname":re["appname"],"success":re.get("success",""),"hostname":re["hostname"],"serviceId":re["serviceId"],"waste_time":re["waste_time"],"params":self.convert_base64_zip(re.get("params","None")),"result":self.convert_base64_zip(re.get("result","None"))})


def convert_base64_zip(self,oldstr):
        if oldstr == "None":
            return ""
        try:
            bytestream = base64.standard_b64decode(oldstr)
            fio = BytesIO(bytestream)
            myzip = zipfile.ZipFile(file=fio)
            return myzip.read(myzip.namelist()[0]).decode("utf-8")
        except Exception as e:
            return "解压发生异常 %s" %(oldstr)
View Code

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM