字符串的壓縮和解壓
處理前

{"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()
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)