首页 > 编程语言 >python之json格式化与紧凑处理

python之json格式化与紧凑处理

时间:2023-04-08 12:15:02浏览次数:50  
标签:格式化 filepath python json print os con

格式化

在工作中json是我们常用的数据格式,因为格式化与紧凑存储所占的内存是不同的,格式化存储接近大一倍空间。所以有时候需要紧凑存储(一行存储),但是查看不太方便。

场景:

  1. 记事本打开json的速度最快,但是没有格式化功能。
  2. notepad++可以格式化但是需要联网安装插件,内网环境不能下载
  3. vscode自带格式化功能,右键->格式化,但是成千上万的文件操作拉低效率

所以,可以通过python脚本将json在格式化与紧凑之间互相转换

以下以python3为例

#coding=utf-8
import json
import os
import sys
import io

# 遍历所有文件夹下的文件
#sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')         #改变标准输出的默认编码

def getFileCon(filename):
  if not os.path.isfile(filename):
    return

  with open(filename, encoding="utf_8_sig") as f:
    con = f.read()
    f.close()
    return con

def writeFile(filepath,con):
  with open(filepath, "w") as f:
    f.write(con)
    f.close()

#递归的找出目表路径下的所有文件
def get_files(dirName):
    for filepath,dirnames,filenames in os.walk(dirName):
        return filenames


if __name__ == "__main__":
  # fl = get_files(".")
  filePath = '.'
  for filepath, dirnames, filenames in os.walk(filePath):
      for f in filenames:
        g = os.path.join(filepath, f)
        # print(g)
        if os.path.isdir(g):
            print(g + " it's a directory")

        elif os.path.isfile(g):
            # print(g + " it's a normal file")
            if not f.endswith(".json"):
                continue

        try:
            con = json.loads(getFileCon(g))
            # print(con)
            # writeFile(g,json.dumps(con,indent=4,ensure_ascii=False).decode('utf8'))
            writeFile(g, json.dumps(con, indent=4, ensure_ascii=False))
            print(g, 'OK')
        except Exception as e:
            print(g, e)

将此脚本拷贝到 指定目录下,然后cmd,执行 python formatjsonAll.py,该目录(包括子目录)下的所有json文件将格式化

紧凑

#coding=utf-8
import json
import os
import sys
import io

# 遍历所有文件夹下的文件
#sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')         #改变标准输出的默认编码

def getFileCon(filename):
  if not os.path.isfile(filename):
    return

  with open(filename, encoding="utf_8_sig") as f:
    con = f.read()
    f.close()
    return con

def writeFile(filepath,con):
  with open(filepath, "w") as f:
    f.write(con)
    f.close()

#递归的找出目表路径下的所有文件
def get_files(dirName):
    for filepath,dirnames,filenames in os.walk(dirName):
        return filenames


if __name__ == "__main__":
  # fl = get_files(".")
  filePath = '.'
  for filepath, dirnames, filenames in os.walk(filePath):
      for f in filenames:
        g = os.path.join(filepath, f)
        # print(g)
        if os.path.isdir(g):
            print(g + " it's a directory")

        elif os.path.isfile(g):
            # print(g + " it's a normal file")
            if not f.endswith(".json"):
                continue

        try:
            con = json.loads(getFileCon(g))         
            # print(con)
            outfile= open(g, "w")
            json.dump(con,outfile,ensure_ascii=False)
            outfile.close()
    
            print(g, 'OK')
        except Exception as e:
            print(g, e)

Json.dump用法

json.dumps()是把python对象转换成json对象的一个过程,生成的是字符串。
json.dump()是把python对象转换成json对象生成一个fp的文件流,和文件相关。

outfile= open(g, "w")
json.dump(con,outfile,ensure_ascii=False)
outfile.close()

# g是文件名,con是json数据,ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文。

参考:

Python json.dump()实例讲解

json.dump方法

 

标签:格式化,filepath,python,json,print,os,con
From: https://www.cnblogs.com/peterYong/p/17298272.html

相关文章

  • Python简易学生管理系统
    目录结构:  1、学生文件student.py#学生类classStudent(object):#存放学生信息student_info={}#学生初始化方法def__init__(self,id,name,addr,tel):self.id=idself.name=nameself.addr=addrself.......
  • JSON对象
    自定义对象<script>//自定义对象varuser={name:"Tom",age:10,gender:"male",/*eat:function(){alert("吃饭!");}*/eat(){alert("吃饭!")......
  • Python 日期和时间用法超强总结
    Python中处理日期和时间的模块Python提供了time和datetime模块,可以帮助我们轻松获取和修改日期和时间,下面让我们来逐一了解一下。time模块该模块包括使用时间执行各种操作所需的所有与时间相关的功能,它还允许我们访问多种用途所需的时钟类型。内置函数:请看下表,它描述了时......
  • Python中排序函数sorted的用法
    Python中有两个排序函数:sorted与sort其中,sorted的用法与c++中的sort是基本一样的本文只介绍sorted用法sorted返回的是一个新的迭代对象,一般默认返回一个list如:对tensor进行排序,返回了一个list我们一般建议直接对list进行排序这样得到的最终还是list如:自定义排序......
  • fastjson学习笔记
    入门详解参考:https://blog.csdn.net/cold___play/article/details/124525519将拿到的json字符串数据,用GsonFormat工具来生成java类参考:https://www.cnblogs.com/1024zy/p/6370305.html......
  • PYTHON 视频时间检测
    importcv2cameraCapture=cv2.VideoCapture('./1/11.mp4')success,frame=cameraCapture.read()whilesuccess:ifcv2.waitKey(1)==27:breakcv2.imshow('Testcamera',frame)success,frame=cameraCapture.read()......
  • python之装饰器
    ###################                    #######################......
  • python远程控制windows机器
    1,进入cmd,输入winrmquickconfig-q,如果出现下图报错,把电脑公网设置为专网   设置专网步骤:win+i,网络和internet,状态,属性  2,检查winrm服务监听状态;进入cmd,输入winrmewinrm/config/listener;记录端口号Port值,后面会用到     3,查看winrm配置信息(可选)通......
  • Python实现Json文件转为点表示法(Dot-Notation)
    将Json转换为点表示法有很多用途,本文基于Python实现一个简单demo来转换。【原文见我的博客,如有更新请博客园的不一定及时同步改:https://blog.jfz.me/2023/python-json-to-dot-notation.html】{"vehicle":{"car":{"bmw":true,"audi"......
  • 【进阶11】【自学笔记】Python _解包的操作
    一、Python解包定义Python解包是指将一个可迭代对象(如列表、元组、字典等)中的元素分别赋值给多个变量的过程。解包可以通过在变量前添加星号`*`来实现,也可以通过在变量前添加双星号`**`来实现字典解包。解包可以简化代码,使代码更加清晰易懂。二、解包实例1、最简单的解包......