我是靠谱客的博主 风趣战斗机,最近开发中收集的这篇文章主要介绍zip文件压缩解压--python批量实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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批量实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部