zoukankan      html  css  js  c++  java
  • json和pickle的数据序列化

    我们的目的是类似虚拟机的挂起操作

    在没学json与pickle之前我们通常这样。

    #序列化
    a={
        'name':'qiangql',
        'age':22
    }
    f=open('text.text','w')
    f.write(str(a))  #这里用str把字典变成了字符串
    f.close()
    #反序列化
    f=open('text.text','r')
    b=eval(f.read())    #这里用eval把字符串变成了可执行的字典
    f.close()
    print(b['age'])
    1 C:UsersqiangqlAppDataLocalProgramsPythonPython36-32python.exe C:/Users/qiangql/PycharmProjects/untitled/内置函数测.py
    2 22
    3 
    4 Process finished with exit code 0
    执行结果

    json方法,json 可以跨平台,但是不支持日期!!!!

    #序列化json
    import json
    a={
        'name':'qiangql',
        'age':22
    }
    f=open('text1.text','w')
    f.write(json.dumps(a)) #这里也可写为json.dump(a,f)
    json.dump(a,f)
    f.close()
    #反序列化jeson
    import json
    f=open('text1.text','r')
    # data=json.loads(f.read())
    data=json.load(f)
    print(data['age'])
    1 C:UsersqiangqlAppDataLocalProgramsPythonPython36-32python.exe C:/Users/qiangql/PycharmProjects/untitled/反序列化.py
    2 22
    3 
    4 Process finished with exit code 0
    执行结果

    pickle方法,支持所有pyhton格式

    #序列化pickle
    import pickle
    def sayhello(name):
        print('hello',name)
    
    a={
        'name':'qiangql',
        'age':22,
        'func':sayhello
    }
    
    f=open('text11.text','wb')  #二进制,因为他支持多平台,所以这里是多平台都能识别的二进制
    
    pickle.dump(a,f)  ### f.write(pickle.dumps(a))
    f.close()
    #反序列化
    import pickle
    def sayhello(name):
        print('hello',name)
    f=open('text11.text','rb')
    
    data=pickle.load(f)      ###data=pickle.loads(f.read())
    print(data['age'])
    print(data['func']('qiangql'))
    1 C:UsersqiangqlAppDataLocalProgramsPythonPython36-32python.exe C:/Users/qiangql/PycharmProjects/untitled/picket反序列化.py
    2 22
    3 hello qiangql
    4 None
    5 
    6 Process finished with exit code 0
    执行结果

    这里要注意一点,所有的序列化,都只能挂起一次,然后反序列化一次,不能多次进行挂起操作,因为反序列化只能一次。

  • 相关阅读:
    asm createdisk时提示没有权限
    webkit 模拟点击 winform
    .net中的反射(转载)
    wpf——三维学习1
    3dmax导出到blend或者vs中
    地理坐标系与投影坐标系
    Arcgis与CityEngine安装破解
    忘记Windows7登陆密码解决办法
    wpf的UserControl用户控件怎么添加到Window窗体中
    postgres索引创建、 存储过程的创建以及在c#中的调用
  • 原文地址:https://www.cnblogs.com/PYlog/p/8693891.html
Copyright © 2011-2022 走看看