zoukankan      html  css  js  c++  java
  • python基础_json模块

    1.json模块可以序列化的数据、

    所有编程语言都能够识别的数据格式叫做json,是字符串
    如下类型可以转换成json字符串: int float bool str list tuple dict None

    ensure_ascii=False 显示中文
    sort_keys = True 对字典的键进行排序

     

    2.实际案例

    # ### 1.json用法
    import json
    # (1)dumps 和 loads 是一对, 序列化成字符串.
    # dumps序列化成字符串
    dic = {"name":"张三","age":18,"classroom":"python7","family":["老爸","老妈","妹妹"]}
    res = json.dumps(dic,ensure_ascii=False,sort_keys=True)
    print(res,type(res))
    
    # loads反序列化成原来的数据类型
    dic = json.loads(res)
    print(dic,type(dic))
    
    # (2) dump 和 load 是一对,针对于文件操作
    dic = {"name":"张三","age":18,"classroom":"python7","family":["老爸","老妈","妹妹"]}
    # dump(要转化的数据,文件对象,关键字实参...)
    with open("ceshi1.json",mode="w",encoding="utf-8") as fp:
        json.dump(dic,fp,ensure_ascii=False)
    
    # load(文件对象)
    with open("ceshi1.json",mode="r",encoding="utf-8") as fp:
        dic = json.load(fp)
    print(dic,type(dic))

    3.json数据连续dump和load操作

    # (1)json
    """
    可以连续dump , 不可以连续load
    load 特征是一次性把所有的内容都取出来变成一个完整的字典;
    所以如果是多个字典不能够转化; 
    
    # 解决方式:
    loads 可以 配合遍历文件对象,一行一行读取内容,在通过loads来转换成原来的数据类型
    """
    dic1 = {"a":1,"b":2}
    dic2 = {"c":3,"d":4}
    with open("ceshi2.json",mode="w",encoding="utf-8") as fp:
        json.dump(dic1,fp)
        fp.write("
    ")
        json.dump(dic2,fp)
        fp.write("
    ")
        
    # 文件对象是迭代器,可以遍历;
    from collections import Iterator,Iterable
    res = isinstance(fp,Iterator)
    print(res)
    
    # 用loads 来解决load存在的弊端;
    with open("ceshi2.json",mode="r",encoding="utf-8") as fp:
        for i in fp:
            # print(i,type(i))
            dic = json.loads(i)
            print(dic,type(dic))

    4.pickle连续dump和load操作

    # (2)pickle
    print("<===>")
    import pickle
    """
    可以连续dump ,也可以连续load
    """
    dic1 = {"a":1,"b":2}
    dic2 = {"c":3,"d":4}
    with open("ceshi3.pkl",mode="wb") as fp:
        pickle.dump(dic1,fp)
        pickle.dump(dic2,fp)
        
    # 方法一
    with open("ceshi3.pkl",mode="rb") as fp:
        dic1 = pickle.load(fp)
        dic2 = pickle.load(fp)
        
    print(dic1,type(dic1))
    print(dic2,type(dic2))
    
    # 方法二
    try:
        with open("ceshi3.pkl",mode="rb") as fp:
            while True:
                dic = pickle.load(fp)
                print(dic)
    except:
        pass
  • 相关阅读:
    深入分析JavaWeb Item13 -- jsp指令具体解释
    Caused by: Unable to locate parent package [json-default] for [class com.you.user.action.StudentActi
    二分图学习整理
    mysql字段去重方式
    谈一谈我最喜欢的诗人--法国诗人波德莱尔
    玩转Web之html+CSS(一)---论坛首页表格的实现
    Windows 7旗舰版安装Visual Studio 2013 Ultimate的系统必备及注意事项
    android 去掉listview之间的黑线
    android 5.0新特性学习--RecyclerView
    ListView random IndexOutOfBoundsException on Froyo
  • 原文地址:https://www.cnblogs.com/jalen-123/p/13173782.html
Copyright © 2011-2022 走看看