• Python基础入门篇【45】--python中json文件及yaml文件的应用


    前言
    作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
    💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
    💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
    如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

    python中文件的应用

    因为文件的读写只能进行字符串或比特类型的操作,其他类型只能转换成字符串或比特类型,想要使用时再转换回原来的类型,转换的过程非常复杂。下面介绍的序列化与反序列化可以很好的解决这个问题。

    序列化与反序列化

    序列化就是将对象的信息或数据结构信息通过转化成字符串,以达到存储或传输的效果

    反序列化,顾名思义,就是将字符串转化成原来的类型。

    可序列化的数据类型

    数字类型、字符串类型、列表类型、元组类型、字典类型(最常用)

    注意:类,实例化对象,函数,集合是无法序列化的

    序列化模块–json模块与pickle模块

    json是通用的序列化模块,几乎所有的编程语言都有json模块,且序列化与反序列化的规则是统一的。因此,我们在python中通过json序列化的数据,在其他语言中都可以反序列化并使用。

    json模块的函数

    函数参数描述例子返回值
    dumpsobj对象序列化json.dumps([1, 2])字符串
    loadsstr反序列化json.load(‘[1, 2]’)原始数据类型

    json是一种序列化的标准,通过json中的dumps函数对对象进行序列化后,对象会以固定的标准返回:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tdq1RAaK-1660467430867)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220814121334432.png)]

    同时,json也是一种文件格式,.json文件中的内容都是字典通过json序列化之后的内容。

    例子:将字典通过json序列化后存入json文件,再从json文件中读取内容转化成字典

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NyCfGbr4-1660467430871)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220814123934936.png)]

    pickle模块的函数

    pickle模块只在python中使用,在其他语言可能无法处理

    函数参数描述例子返回值
    dumpsobj对象序列化pickle.dumps([1, 2])比特
    loadsbyte反序列化pickle.load(‘[1, 2]’)原始数据类型

    注意:和json不同的是,pickle模块dumps函数返回值是比特类型,load函数也只支持对比特类型进行反序列化

    yaml

    yaml文件

    yaml文件类似json和txt文件,都是一种文本文件:xxx.yaml

    yaml常作为配置文件使用,一般不会进行修改。yaml文件可以在服务启动前,将服务的配置信息放入到项目中进行初始化。以后在实际的web开发中会详细介绍。

    yaml文件书写格式非常灵活,下面举一个常见的书写规范的例子:

    name:
    	xiaoming
    age:
    	10
    like:
    	-piano
    	-pingpong
    new:
    	a:b
    	b:1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    调用yaml–第三方模块:pyyaml

    首先安装pyyaml模块:pip install pyyaml

    然后导入yaml模块:import yaml

    读取yaml文件的方法:

    f = open(yaml_file, 'r')
    data = yaml.load(f.read(), Loader=yaml.FullLoader)   # 返回值是字典类型
    f.close()
    
    # yaml.load()函数再yaml5.1之后必须加入第二个参数Loader,否则会报错
    
    • 1
    • 2
    • 3
    • 4
    • 5

    例子:

    yaml文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDrTXZZc-1660467430875)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220814165016006.png)]

    读取yaml文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jxMGTTkj-1660467430876)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220814165127871.png)]

  • 相关阅读:
    数据结构---单链表
    R之线性回归模型
    【LeetCode-中等题】148. 排序链表
    Go图片文件按照时间戳如何排序
    vscode插件开发-发布插件
    【SpingBoot拦截器】实现两个接口,配置拦截路径
    PerfView专题 (第八篇):洞察 C# 内存泄漏之寻找静态变量名和GC模式
    杭电多校-Shinobu loves trip-(预处理+同余定理)
    [青少年CTF训练平台]web部分题解(已完结!)
    【Dubbo3高级特性】「框架与服务」自定义Dubbo服务容器及扩展容器实现分析
  • 原文地址:https://blog.csdn.net/weixin_44629511/article/details/126333529