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