import zipfile
import os
import json
import zlib
import base64
import sys
解压制定目录下的所有zip文件
def unzip(path):
for p in os.walk(path): # (root,dirs,files)
root = p[0]
dirs = p[1]
files = p[2]
for file in files:
file_path = os.path.join(root,file)
if os.path.isfile(file_path): # 判断是否是文件
if zipfile.is_zipfile(file_path): # 判断是否是zip文件
new_dir = file_path.replace(‘.zip’, ‘’) # 解压的文件名
if not os.path.exists(new_dir): # 判断文件夹是否存在
os.mkdir(new_dir) # 新建文件夹
f = zipfile.ZipFile(file_path) # 读取zip文件
f.extractall(new_dir) # 提取zip文件
压缩json数据为zip文件并转为base64编码
def enc_json_zip_base64(json_str):
json_object = json.loads(json_str)
zip_data = zlib.compress(json.dumps(json_object).encode(“utf-8”))
base64_data = base64.b64encode(zip_data)
return base64_data
解压base64编码的zip文件并转为json字符串
def dec_base64_zip_json(base64zip):
zip_data = base64.b64decode(base64zip)
json_data = zlib.decompress(zip_data)
json_object = json.loads(json_data)
return json.dumps(json_object, sort_keys=True, indent=4, separators=(', ', ': '))
if name == “main”:
if len(sys.argv) == 1:
print(“need para. \nfor example: python3 base64-zip.py argv1 …\n”)
data = enc_json_zip_base64(‘’‘{
“desc”:{
“1”:“base64 dec”,
“2”:“zip dec”,
“3”:“print json”,
“4”:“support many print”
}
}’‘’)
output = dec_base64_zip_json(data)
print(f"input: {data}\n")
print(f"output: {output}\n")
exit()
for i in range(len(sys.argv)-1):
output = dec_base64_zip_json(sys.argv[i+1])
print(f"input:\n{sys.argv[i+1]}\n")
print(f"output:\n{output}\n")