• 序列化


     序列化:

      把对象或变量从内存中编程可存储或传输的过程叫做序列化

     反序列化:

      把变量内容从序列化的对象重新读到内存中称之为反序列化

    把一个对象(字典、列表、函数等)写入到一个文件的动作就叫做序列化,但直接写入就报如下错误:

    1 dic={"name":"Adair","age":"18"}
    2 
    3 f=open("serialization",'w')
    4 f.write(dic)
    5 f.close()

    TypeError: write() argument must be str, not dict #文件写入时必须是字符串,不能是字典

    神不神奇~  不过,不打紧,python封装了json模块专门解决这个神奇。

    json:

      与xml协议一样,是各个语言之间通信的桥梁

      json 序列化:

    1 import json
    2 
    3 dic={"name":"Adair","age":"18"}
    4 f=open("Json_Dump",'w')
    5 Json_Dump=json.dumps(dic)
    6 f.write(Json_Dump)
    7 f.close()

      还有一种简单的方法:

    1 import json
    2 dic={"name":"Adair","age":"18"}
    3 f=open("Json_Dump",'w')
    4 json.dump(dic,f)

      json反序列化:

    1 import json
    2 
    3 f=open("Json_Dump",'r')
    4 print(json.loads(f.read())["name"])
    5 f.close()

      他也有一种简单的写法,开不开心:

    1 f=open("Json_Dump",'r')
    2 print(json.load(f)["name"])
    3 f.close()

      json的缺点就是不能序列化函数,不过一般也不会序列化函数,顺带记下吧:

    pickle:

    1 import pickle
    2 def Printf():
    3     print("hello Adair")
    4 f=open("Pickle",'wb')
    5 pickle.dump(Printf,f)
    1 import pickle
    2 def Printf():
    3     print("hello Adair")
    4 f=open("Pickle",'rb')
    5 pickle.load(f)()

         写入读入时需要使用二进制(wb)的方式写入,pickle的方式更json一样,唯一的区别就是json序列化后内容可以肉眼可以识别,而pickle是以二进制的方式写入的,肉眼不能识别。

  • 相关阅读:
    Linux学习笔记:常用100条命令(三)
    Linux学习笔记:常用100条命令(二)
    k8s的imagePullSecrets如何生成及使用
    Jenkins基于https的k8s配置
    ubuntu supervisor管理uwsgi+nginx
    ubuntu Django + Uwsgi + Nginx 的生产环境部署
    ubuntu 安装和配置 GitLab
    ubuntu 安装harbor仓库
    ubuntu 安装Jenkins
    php过滤html标签截取部分内容
  • 原文地址:https://www.cnblogs.com/Adairye/p/9297457.html
Copyright © 2020-2023  润新知