zoukankan      html  css  js  c++  java
  • 序列化模块

    什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
    那为什么要序列化呢?
    比如,我们在python代码中写的一段代码需要c上使用,那我们怎么给?我们能想到的方法就是存在文件里,然后在c上再从文件里读出来。
    但是我们都知道,对于文件来说是没有
    不是所有的数据类型文件都能够识别的比如字典、列表等,所以我们只能将数据转换成字典放到文件中。
    通过文件在c上进行反序列化再从文件里读出来。就可以实现不同编译程序间数据的共用了。
    序列


    
    

    json

    Json模块提供了四个功能:dumps、dump、loads、load 

    dumps 和 loads 用于python对象和字符串间的序列化和反序列化
    dumps:将python 基本数据类型转化为json格式字符串 loads:将json格式数据类型转化为python数据类型

     

    # dic = {1:"a",2:'b'}
    # print(type(dic),dic)
    <class 'dict'> {1: 'a', 2: 'b'} # import json # str_d
    = json.dumps(dic) # 序列化 # print(type(str_d),str_d) <class 'str'> {"1": "a", "2": "b"} #注意,json转换完的字符串类型的字典中的字符串是由""表示的 # dic_d = json.loads(str_d) # 反序列化 #此时要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示 # print(type(dic_d),dic_d)
    <class 'dict'> {'1': 'a', '2': 'b'}

    dump 和load 用于对文件进行序列化和反序列化

    
    

    dump:主要用于json文件的读写,json.dump(x,f),x是对象,f是一个文件对象,这个方法可以将json字符串写入到文本文件中
    load:进行反序列,读取文件。

    #import json
    #dic = {1:"a",2:'b'}
    #f=open('序列化.txt','w',encoding='utf-8')
    #json.dump(dic ,f)#将dic序列化,并写入f文件
    #close

    #e1
    = json.load(open('序列化.txt','r')) #读取json文件 print("e1的类型:",type(e1)) print('e1的内容:',e1)


    pick

     

    pickle是python中独有的序列化模块,所谓独有,就是指不能和其他编程语言的序列化进行交互,因为pickle将数据对象转化为bytes

    pickle模块同样提供了四个功能:dumps、dump、loads、load

     

     dumps/loads将所传入的变量的值序列化为一个bytes类型,然后,就可以将这个bytes写入磁盘或者进行传输,

     再用loads方法反序列化出对象。

    # import pickle
    # d=[1,2,3,4]
    # print(pickle.dumps(d))
    b'x80x03]qx00(Kx01Kx02Kx03Kx04e.'   
    >>> d=[1,2,3,4]
    >>> r=pickle.dumps(d)
    >>> print(r)
    b'x80x03]qx00(Kx01Kx02Kx03Kx04e.'
    >>> pickle.loads(r)
    [1, 2, 3, 4]

     

     dump/load则更加一步到位,在dump中可以传入两个参数,一个为需要序列化的变量,另一个为需要写入的文件。

      再用load方法直接反序列化一个文件

    # f=open('file','wb')    #用dump序列化,需要用bytes类型的wb和rb
    # d=[1,2,3,4]
    # pickle.dump(d,f)
    # f.close()
    # f=open('file','rb')
    # f.read()
    b'x80x03]qx00(Kx01Kx02Kx03Kx04e.'
    # d=[1,2,3,4]
    # f=open('file_test','wb')
    # pickle.dump(d,f)
    # f.close()
    # f=open('file_test','rb')
    # r=pickle.load(f)
    # f.close()
    # print(r)
    [1, 2, 3, 4]

  • 相关阅读:
    结对项目——四则运算
    关于结对编程的感想
    《诗词大闯关》调查表与调查结果分析
    我的软件工程课目标
    我的软件工程课目标
    软件工程课程建议
    结对编程(二)
    结对编程——四则运算
    结对编程
    《诗词大闯关》问卷调查心得与体会
  • 原文地址:https://www.cnblogs.com/liusouthern/p/8269085.html
Copyright © 2011-2022 走看看