• day07 json与pickle模块


    面向对象

    # 序列化模块 json和pickle# hashlib模块
    # logging模块# 模块和包    
    # 自定义模块    
    # 模块的导入    
    # 包的导入
    # 软件的开发规范
    # 面向对象
    

    json模块

    json 是一种通用的数据传输格式,本质就是一个字符串

    字符串网络传输

    import json
    dic = {"operate":'login','username':'alex','password':'bigsb'}
    #网络发送之前做
    ret = json.dumps(dic) #将字典转为字符串
    print(dic)
    print(ret,type(ret)) # 通过字符串--> 字节
    byte_8 = ret.encode('utf-8')
    print(byte_8)
    # dic -json.dumps-> json格式的str -encode-> 字节 -->在网络上传递了
    
    # 字节 -decode-> 字符串 -->字典
    #接收之后做
    str8 = byte_8.decode('utf-8')
    print(str8)
    ret = json.loads(str8)  // 反序列化过程  把字符串转换成字典或者其他数据类型
    print(ret)
    
    # 1.网络传输不认识字典   2.我们的文件操作不认识字典 3.在Python之外环境不认识字典
    import json
    dic = {'北京':{'朝阳':{},'海淀':{}}}
    text= json.dumps(dic,ensure_ascii=False)   # 序列化的过程 把字典/其它数据类型转换成字符串
    print(text)
    with open('city',mode = 'w',encoding='utf-8') as f:
        f.write(text)
        
    #中文出现编码不影响程序读取
    with open('city',encoding='utf-8') as f:
        str_d = f.read()
        print(str_d)
        dic = json.loads(str_d)
    print(dic)
    # 1.写到文件里的是中文出现编码   ensure_ascii=False #不转换成ascii码
    
    # 2.为什么在json中不能放集合
    # json数据类型是一个特殊的字符串
    	# 在任何语言中它的type都必须是字符串
    	# 格式要求严格,但是还要满足一些要求 : key必须是字符串,且value只能是:字典 列表 字符串 数字 bool值
    
    # json是所有的编程语言都公认的一种数据类型
    # 如果是python语言要给java语言发送信息, 那么就可以转换成json格式,java经过一系列转换就可以获取到字典数据了
    #自己补充
    # json 作为Python和Java之间交互的中间键,
    	# Python转换数据之前先转为json,然后发给java,Java解码json,Java发数据之前先转为json再发送Python,Python解码json
    	#多个语言之间通过json交互,
    	# 再发数据到网络上之前必须要先转为字符串,就可以通过json来转换
    	#前端语言与后端语言之间交互也是json
    

    序列化(dump/dumps)和反序列化(load/loads)

    # 标准化 --> 变得标准
    # 序列化 --> 变成序列
    
    # 序列 --> 按照顺序排列的
    #字典是无序的,是散列
    
    # 字符串 = json.dumps(字典/列表) #返回字符串
    # 字典/列表 = json.loads(字符串) #返回字典
    
    # loads  dumps   和内存交互
    # load   dump    和文件交互
    
    #dump
    import json
    lst = ['alex',1,2,3]
    with open('file','w',encoding='utf-8') as f:
        json.dump(lst,f) #直接序列化并写到文件句柄里
    
    # load
    import json
    with open('file',encoding='utf-8') as f:
        ret = json.load(f)
        print(ret) #直接得到列表
    
    s = '{"alex":"sb","wusir":73}'
    import json
    ret = json.loads(s)
    print(ret)
    print(ret['alex'])
    
    #符合json规则
        # json规则是没有除了字典 列表 字符串 数字 bool值之外的其他类型
        # 所有的key都是字符串
        #字符串都用双引号包裹
    s = '{"alex":"sb","wusir":73}'
    import json
    ret = json.loads(s) #将字符串转为字典
    print(ret)
    print(ret['alex'])
    
    #json4种方法
    	# loads  dumps   和内存交互
    	# load   dump    和文件交互
    

    pickle模块

    import pickle
    dic = {'北京':{'朝阳','昌平'},('天津','河北'):[1,2,3]}
    ret = pickle.dumps(dic)
    print(ret) #结果为字节
    d = pickle.loads(ret)
    print(d) #反序列化
    
    with open('pickle_file','wb') as f: #dump直接是二进制
        pickle.dump(dic,f)
    with open('pickle_file', 'rb') as f:
        ret = pickle.load(f)
        print(ret)
    
    # pickle是python语言中特有的序列化模块,什么数据类型都支持
    #游戏用pickle做存档功能
    # pickle和json的区别
    # pickle 支持python中的几乎所有数据类型,但是只能python一种语言中使用
    # json   支持所有的语言,但只支持有限的数据类型
    
  • 相关阅读:
    Linux-nmap
    MongoDb注意事项
    HTML如何转XTML
    Centos 64位 Install certificate on apache 即走https协议
    CentOS 下搭建部署独立SVN服务器全程详解(5.5)
    LNMP安装与配置
    64位CentOS 6.0下搭建LAMP环境
    Apache遇到的问题:APR not found
    超详细LAMP环境搭建
    偏方治百病
  • 原文地址:https://www.cnblogs.com/yihutu/p/11380488.html
Copyright © 2020-2023  润新知