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

    用来传输数据

    序列化:把对象(变量)从内存中变成可存储或传输的过程称之为序列化,这个序列化必须得规定格式,我们保存的格式为json文件

    反序列化:把json文件从硬盘中读取出来

    json文件并不是Python独有的,所有的语言都有json,所有json可以跨平台/语言进行传输数据。在python中只能写入的dict/list/str/int/float/bool/None类型

    pickle支持python中任意数据类型,所以不能跨平台使用(因为不同平台的函数不同),并且pickle序列化的过程中是以二进制的形式转化

    json

    import json
    dict = {'name':'nick'}
    res = json.dumps(dict)    # 在内存中写数据
    print(res,type(res))    
    
    
    {"name": "nick"} <class 'str'>
    
    
    res2 = json.loads(res)    # 在内存中读数据
    print(res2,type(res2))
    
    
    {'name': 'nick'} <class 'dict'>
    
    
    dict = {'name':'nick'}
    # 在文件中写数据,生成test.json文件
    with open('test.json', 'w', encoding='utf8') as fw:
        json.dump(dict, fw)
    
    
    # 在文件中读数据
    with open('test.json', 'r',encoding='utf8') as fr:
        data = json.load(fr)
    print(data)
    
    
    {'name': 'nick'}
    
    

    pickle

    import pickle
    dict = {'name':'nick'}
    res = pickle.dumps(dict)    # 在内存中以二进制的形式写数据
    print(res)
    
    
    b'x80x03}qx00Xx04x00x00x00nameqx01Xx04x00x00x00nickqx02s.'
    
    
    res2 = pickle.loads(res)    # 在内存中读数据
    print(res2)
    
    
    {'name': 'nick'}
    
    
    dict = {'name':'nick'}
    # 因为是以二进制的形式,所以要用wb模式写入test.pkl中,不用指定字符编码
    with open('test.pkl', 'wb') as fw:    
        pickle.dump(dict, fw)
    
    
    # 用rb模式读取test.pkl中数据,不用指定字符编码
    with open('test.pkl', 'rb') as fr:    
        data = pickle.load(fr)
    print(data)
    
    
    {'name': 'nick'}
    
    
  • 相关阅读:
    不死神兔
    C/C++内存管理详解
    python下调用不在环境变量中的firefox
    【转至nmap】nc命令
    Linux SSH隧道技术(端口转发,socket代理)
    linux共享上网设置
    HDU
    CSU
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11852420.html
Copyright © 2011-2022 走看看