• python常用模块——序列化模块,Json,pickle


    先明白什么什么化的词语,说明已经到了这个阶段,已经实现了这个结果

    例如,序列化,归一化,实例化,初始化

    序列化,就是将某一个对象变成了一个序列

      #序列: 列表 元祖 字符串

    #python中序列化中的序列 只包含 字符串

     ……得到一个字符串的结果,过程就叫做序列化

    字典,列表,数字,对象 --序列化-> 字符串 

    为什么要序列化

    #1.要把内容写入文件   需要用序列化

    #2. 网络传输数据的时候 需要用序列化

    从字符串 ----反序列化 --> 字典/ 列表/ 数据/ 对象

      eval 不能随便用,因为不能保证从网络上来的数据的安全性

    #json

     共四个方法

    dumps

    loads

    dump

    load

    import json:

    dic =  {'aaa' : 'bbb', 'ccc' : 'ddd'}  #转换成字符串

    str_dic = json.dumps(dic) 

    print(str_dic, type(str_dic))

     with open('json_dump','w') as f: #之前写入文件

    f.wirte(str_dic) 

    dic =  {'aaa' : 'bbb', 'ccc' : 'ddd'}

    with open('json_dump2', 'w') as f:

    json.dump(dic, f)

    #注意dump直接操作变量和文件,直接将变量写入到文件中 

    #括号里接收两个参数,一个是写入的内容dic,另外一个是文件句柄 f

      

    注意:json转换后成字符串之后 必须是双引号(普通的字符串形式都是单引号) 不然json不认

    json.loads(str_dic) #将字符串转换成字典

    with open('json_dump2', 'r') as f:

    json.load(f)

    直接拿到上面dump写入文件f的变量 

    json格式的限制一:json 字典格式的key必须是字符串数据类型,如果你输入的key是一个数字,他也会帮助你转换成字符串的类型

    dic = {1:2,3:4}

    str_dic = json.dumps(dic) 

     json 是否支持元祖 对元祖做value的 字典会把元祖强行转换成列表 并且loads后还是列表。

     dic = {‘abc':(1,2,3)}

     str_dic = json.dumps(dic)

    new_dic = json.loads(str_dic)


    json是否支持元祖做key,完全不支持元祖做key 

    dic = {(1,2,3):'abc'} 

    str_dic = json.dumps(dic) #报错 

    json能不能多次dump数据到文件里, 可以多次dump 不能load出来

    lst['aaa',123','bbb',456]

    dic{'aaa':'bbb', 'ccc':'ddd'} 

    with open('json_dump', 'w') as f:

    json.dump(lst.f)

      json.dump(dic.f)

    with open ('json_dump') as f:

    ret = json.load(f) 

    print(ret) #报错

    想dump多个数据进入文件, 用dumps

    lst['aaa',123','bbb',456]

    dic{'aaa':'bbb', 'ccc':'ddd'} 

    with open('json_dump', 'w') as f:

    str_lst = json.dumps(lst)

      str_dic = json.dumps(dic)

    f.write(str_lst +' ')

    f.write(str_dic +' ')

     with open('json_dump') as f:

      for line in f:

    ret = json.loads(line)

    print(ret) 

     json 是所有语言都能认识的数据类型, 但支持的数据类型很少,

    pickle 可以支持python中几乎所有的数据类型, 缺点是不能跨语言

  • 相关阅读:
    java数组基础
    java异常处理机制
    java面向对象基础(四):抽象类和接口
    java面向对象基础(二)
    java类路径classpath和包
    java面向对象基础(一)
    Tomcat(二):tomcat配置文件server.xml详解和部署简介
    java集合框架(Collections Framework)
    java基础数据类型包装类
    String、StringBuilder和StringBuffer类
  • 原文地址:https://www.cnblogs.com/Loren2o/p/9451727.html
Copyright © 2020-2023  润新知