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

    JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

           

    # json序列化
    import json,time
    user={'name':'egon','age':18,'nb':True}
    with open('user.json','w',encoding='utf-8') as f:
        f.write(json.dumps(user)) # dumps
    
    students=['alex','egon','wxx','yxx']
    json.dump(students,open('students.json','w',encoding='utf-8')) # dump

    dic1 = {'type':'dic1','username':'loleina','age':16}
    json.dumps(dic1,sort_keys=True,indent =4,separators=(',', ': '),encoding="gbk",ensure_ascii=True ) # dump
    # 实际上就是对函数的参数的一个理解过程,下面列出几个常用的参数:
    sort_keys:将数据根据keys的值进行排序。
    indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json
    separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(',',':');这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
    encoding:默认是UTF-8,设置json数据的编码方式。
    ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似uXXXX的显示数据,设置成False后,就能正常显示
    Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成
    True,则会跳过这类key
    
    # pickle序列化
    import pickle
    s={1,2,3}
    with open('s.pkl','wb') as f:
        f.write(pickle.dumps(s)) # dumps
    
    pickle.dump(s,open('s.pkl','wb'))  # dump
    
    #json反序列化
    import json
    with open('user.json','r',encoding='utf-8') as f:
        user=json.loads(f.read()) #json.loads
        print(user['name'])
    user=json.load(open('user.json','r',encoding='utf-8')) #json.load
    print(user['age'])
    
    #pickle反序列化
    import pickle
    with open('s.pkl','rb') as f:
        s=pickle.loads(f.read()) #loads
        print(s,type(s))
    s=pickle.load(open('s.pkl','rb')) #load
    print(s, type(s))

     shelve 模块

         shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型

    import shelve
    
    f=shelve.open('db.shl')
    # f['stu1']={'name':'alex1','age':38}
    # f['stu2']={'name':'alex2','age':28}
    print(f['stu1']['name'])
    f.close()
  • 相关阅读:
    [HAOI2008]硬币购物
    [NOI2006]网络收费
    [HNOI2014]米特运输
    Codeforces Round #536 (Div. 2)
    [洛谷P3931]SAC E#1
    [洛谷P1402]酒店之王
    [洛谷P4174][NOI2006]最大获利
    [CF1082G]Petya and Graph
    [CF1095F]Make It Connected
    [CF1083B]The Fair Nut and Strings
  • 原文地址:https://www.cnblogs.com/snailgirl/p/9416053.html
Copyright © 2011-2022 走看看