zoukankan      html  css  js  c++  java
  • python——json&pickle模块

    json模块

      (1)json模块的两种方法 :dumps() 和 loads()

    import json
    
    #------dumps()
    dic = {'name':'alex'}
    s = 'hello'
    
    data1 = json.dumps(dic)
    data2 = json.dumps(s)   #dumps()的步骤为: ------>"hello" (先把单引号变成双引号) -------->'"hello"' (再外面加上单引号)
    
    print(data1,data2)  #此时 data为一个json字符串,其特点之一就是 双引号(调用dumps()方法,所有的单引号都会变成双引号)
    print(type(data1))
    
    #---将数据存入磁盘---
    f = open('hello','w')
    dic_str = json.dumps(dic)
    f.write(dic_str)          # dump()方法:dump(dic_str,f) 就相当于做了上述两步    该方法只适用于文件操作
    f.close()
    
    #------loads()---从磁盘中读取数据------
    f_read = open('hello','r')
    data = json.loads(f_read.read()) #从文件中读取数据,并将其还原为 dumps()之前的数据类型 
                                     #load方法: json.load(f_read) 将相当于json.loads(f_read.read())   即省去了 .read()  该方法只适用于文件操作
    print(data['name'])
    print(data)
    print(type(data))   #此时data为字典类型
    f_read.close()

      (2)

    dct='{"1":"111"}'
    data = json.loads(dct)
    print(data)
    print(type(data))

      总结:无论数据是怎样创建的,只要满足json格式,就可以json.loads出来,不一定非要dumps的数据才能loads

          再上述程序中 如果dct = ‘{'1':'111'}’   则会报错,因为 json 不认单引号

    pickle模块

     pickle模块的功能与json大致相同

    import  pickle
    #--------------序列化----------------
    dic = {'name':'jiao','age':22,'sex':'male'}
    
    print(type(dic))    #<class 'dict'>
    
    j = pickle.dumps(dic)
    print(type(j))      #<class 'bytes'>   可知,json.dumps() 是将括号内容转换为字符串形式,而pickle.dumps() 是将其转换为字节形式
    
    
    f = open('序列化对象_pickle.txt','wb')   #注意 w 是写字符串 ,wb 是写入bytes ,j 是 ‘bytes’
    f.write(j)      #41 和 46 行 等价于 pickle.dump(dic,f)
    
    #-------------反序列化-------
    
    f = open('序列化对象_pickle.txt','rb')
    
    data = pickle.loads(f.read())   #等价于 data = pickle.load(f)
    
    print(data['age'])

    序列化:

      把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,

      序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

      反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

  • 相关阅读:
    安装MySQL-python时报错
    人的成功平台很重要
    开源运维工具
    遗忘Windows Server 2008R2密码的处理方法
    操作系统下载和操作系统更新失败解决
    说说对SQL 语句优化有哪些方法?
    Git彻底删除历史提交记录的方法
    MSSQL备份脚本
    .NET Core Data Access
    各种数据库默认端口总结
  • 原文地址:https://www.cnblogs.com/jgua/p/13673651.html
Copyright © 2011-2022 走看看