• 常用模块 json 与 pickle的 使用


    json  模块
    
    import json
    from datetime import datetime
    
    
    json.dumps 与 json.dump 可以将常见的数据类型转变为字符串数据
    
    
    1)、对于datetime类型的数据,需要作出一些修改
    
    data = datetime.now()
    
    需要重写json里的一个类:
    class ComplexEncoder(json.JSONEncoder):
        def default(self, o):
            if isinstance(o,datetime):
                return o.strftime('%Y-%m-%d %H:%M:%S')
            else:
                return json.JSONEncoder.default(self,o)
    
    with open('json序列化','w',encoding='utf-8') as f:
        f.write(json.dumps(data,cls=ComplexEncoder)+'
    ')
    
    
    2)、对于中文在序列化时,默认会将其装换为unicode,若有需要,可以将其保留为中文字符串
    
    a = 'michale想在上海买套房'
    
    with open('json序列化','w',encoding='utf-8') as f:
        json.dump(a,f,ensure_ascii=False)
            f.write('
    ')
    
    
    由上可知:json.dumps()直接操作常规数据,利用write()函数将数据写入 文件里。而json.dump()直接在里面添加两个参数就可以将数据写入文件。
    即:前者操作字符串写入,后者直接文件打交道。
    
    
    对于json.load和json.loads而言,二者只能将字符串类型的字典给转换出来,如果文件里出现了其他类型的数据,就直接报错!
    pickle 模块
    
    pickle模块可将任意类型的数据转换为字节类型的数据存入到文件中。
    当然也可以直接将这些直接类型的数据取出还原为之前的类型。
    
    import pickle
    li = [1,2,3,4,5,6,'qwe','妹子']
    
    data = pickle.dumps(li)
    print(data)
    #b'x80x03]qx00(Kx01Kx02Kx03Kx04Kx05Kx06Xx03x00x00x00qweqx01Xx06x00x00x00xe5xa6xb9xe5xadx90qx02e.'
    data1 = pickle.loads(data)
    print(data1,type(data1))
    # [1, 2, 3, 4, 5, 6, 'qwe', '妹子'] <class 'list'>
    
    # 文件操作
    # with open('pickle序列化','wb') as f:
    #     # pickle.dump(li,f)
    #     f.write(pickle.dumps(li))
    
    with open('pickle序列化','rb') as f:
        # res = pickle.load(f)
        # print(res,type(res)) #[1, 2, 3, 4, 5, 6, 'qwe', '妹子']  <class 'list'>
        res = f.read()
        data2 = pickle.loads(res)
        print(data2)
    
    因为pickle模块时python独有的,虽然可以序列化任意类型的数据,但是在
    文件里查看存入的数据时,会显示乱码。且不同的python版本之间可能会乱码。
    json 与  pickle 的总结:
    
    
    pickle序列化的对象为bytes对象,json序列化为str,当然也可以转码为字节类型;
    pickle的序列化结果不通用,json序列化的结果通用!
  • 相关阅读:
    3. 文件存储格式
    2. Reduce 输出压缩
    Nginx+Tomcat搭建集群环境
    redis缓存失效及解决方案
    几种开源NOSQL数据库
    使用Maven开发用户模块的CRUD(增删改查)
    Spring Boot 面试题整理
    oracle 11g&12c(pdb&cdb)系统巡检
    Redhat 6.8部署oracle12.2.0.1.0
    sqlserver创建程序集
  • 原文地址:https://www.cnblogs.com/changwenjun-666/p/11461256.html
Copyright © 2020-2023  润新知