zoukankan      html  css  js  c++  java
  • python常用模块——json、pickle、shelve

    常用模块 json  pickle shelve

    json模块和pickle模块很像,方法都一样;json在js、python、java等等中通用,而pickle是python里的。

    一、 json模块

      json模块只需要掌握 dumps和loads即可;另外两个用到时再补充吧;

    1. dump()

    格式如下:

    • dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
      

    fp为文件句柄;和dumps类似,区别举例见dumps;

    2. load()

    格式如下:

    • load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
      

    fp为文件句柄;和loads类似,区别举例见loads;

    3. dumps()

    格式如下:

    • dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
      

    将字典、列表等转换为json格式; 文件中只能写入str格式,故dict必须转换为json或者强制转换str;

    例1和例2等效;一个用的是dumps,一个是dump;

    • 例1:
          import json
          dict = {'name':'superman','job':'IT'}
          f = open('json_txt','w')
      
          json_data = json.dumps(dict)
          f.write(json_data)
      
          f.close()
      
      例2:
          import json
          dict = {'name':'superman','job':'IT'}
          f = open('json_txt','w')
      
          json.dump(dict,f)
      
          f.close()
      

    4. loads()

    格式如下:

    • loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
      

    将json等字符串格式转换为字典等原有的格式; 从文件中读取内容为 str格式,并不是字典等对象类型;需要转换回去才可以当做对象处理;

    例1和例2等效;一个用的是loads,一个是load;

    • 例1:
          import json
          f = open('json_txt','r')
          dict = json.loads(f.read())
          print(dict['name'])         # 输出 superman
      
      例2:
          import json
          f = open('json_txt','r')
          dict = json.load(f)
          print(dict['name'])         # 输出 superman
      

    二、 pickle模块

      pickle模块的方法和json一样。唯一的区别是转换为pickle后,需要二进制模式才可以写进文件;pickle支持更多的格式(比如类);

    1. dump()

    格式如下:

    • dump(obj, file, protocol=None, *, fix_imports=True)
      
      和json模块的dump一样;

    2. load()

    格式如下:

    • load(file, *, fix_imports=True, encoding='ASCII', errors='strict')
      

    和json模块的load一样;

    3. dumps()

    格式如下:

    • dumps(obj, protocol=None, *, fix_imports=True)
      

    将字典、列表等转换为pickle特有格式;

    例如:

    • import pickle
      dict = {'name':'superman','job':'IT'}
      pickle_data = pickle.dumps(dict)
      f = open('pickle_txt','wb')         # 注意,这里要用二进制模式写
      f.write(pickle_data)
      f.close()
      

    4. loads()

    格式如下:

    • loads(data, *, fix_imports=True, encoding='ASCII', errors='strict')
      

    将pickle格式转换为字典等原有的格式; 从文件中读取内容为pickle处理过的一种str格式,并不是字典等对象类型;需要转换回去才可以当做对象处理;

    例如:

    • import pickle
      f = open('pickle_txt','rb')         # 注意,要二进制模式读
      dict = pickle.loads(f.read())
      print(dict['name'])         # 输出 superman
      

    三、shelve 模块

      shelve模块只有一个方法open;使用shelve模块存储字典更方便;会生成三个文件存储,.bak/.dat/.dir三个格式的文件;

      如下例中,实际是一个嵌套字典: f = {'info':'{'name':'wjz','job':'IT'}'};

    open()

    格式如下:

    • open(filename, flag='c', protocol=None, writeback=False)
      

    例1:存储字典

    • import shelve
      f=shelve.open('shelve_txt')             # 生成 shelve_txt.bak  shelve_txt.dat  shelve_txt.dir三个文件;
      f['info']={'name':'wjz','job':'IT'}     # 将字典info存入shelve_txt;
      

    例2:从shelve存储的文件中取字典

    • import shelve
      f=shelve.open('shelve_txt')
      print(f['info'])                        # 等效 print(f.get('info')) ,输出字典{'name':'wjz','job':'IT'}
    如需转载,请注明出处,否则本人会追究法律责任!
  • 相关阅读:
    WEB前端:05_scroll滚动(图片/文字滚动)
    WEB前端:04_slider幻灯片(焦点图轮换)
    WEB前端:03_hover切换(显示/隐藏)
    概率统计
    概率统计
    线性代数
    线性代数
    线性代数
    线性代数
    大数据时代,Java通过JFreeChart分析和可视化数据
  • 原文地址:https://www.cnblogs.com/hacker001/p/10094743.html
Copyright © 2011-2022 走看看