概述
zip解压缩文件以及压缩文件的实际使用方法——批量解压缩文件后批量修改文件内容然后再压缩文件;
import zipfile
import os
import shutil
import json
def unzip_file(zip_src, dst_dir):
# 解压缩zip文件
fz = zipfile.ZipFile(zip_src, "r")
for file in fz.namelist():
fz.extract(file, dst_dir)
fz.close()
def modify_json_data(file):
# 获取json文件数据
dicts = {}
with open(file, "rb") as f:
data = json.load(f)
for value in data:
if "setConfig" in value: # list中含有setConfig则存在背景设置
# 遍历list寻找backgroundGrid
for name in value:
if isinstance(name, dict):
if "backgroundGrid" in name.keys():
if name["backgroundGrid"] != 0:
name["backgroundGrid"] = 0 # 修改为纯色背景,0为纯色,1为网格,2为点状
print("modify {} backgrroudgrid to 0".format(file))
dicts = data
break
os.remove(file)
with open(file, "w") as fw:
json.dump(dicts, fw)
def zip_file(path):
# 压缩文件
zip_name = path + ".zip"
z = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)
filelist = os.listdir(path)
for file in filelist:
filepath = path + "\" + file
if os.path.isfile(filepath):
if file == "replayData.json":
modify_json_data(filepath)
z.write(filepath, file) # filepath为写入的文件路径,file为保存的文件名
z.close()
def do_batch_unzip(path):
# 批量修改zip文件内内容后,重新压缩
filelist = os.listdir(path)
for file in filelist:
filepath = path + "\" + file
if os.path.isfile(filepath):
if file.endswith(".zip"):
name = os.path.splitext(file)[0]
dst_dir =path + "\" + name # 文件解压缩路径为相同
unzip_file(filepath, dst_dir) # 解压缩zip文件
os.remove(filepath) # 删除zip文件
zip_file(dst_dir) # 压缩文件
shutil.rmtree(dst_dir) # 删除文件夹
else:
do_batch_unzip(filepath)
if __name__ == "__main__":
do_batch_unzip("E:\Project\uiData\")
最后
以上就是风趣战斗机为你收集整理的zip文件压缩解压--python批量实现的全部内容,希望文章能够帮你解决zip文件压缩解压--python批量实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复