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
    执行结果

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

  • 相关阅读:
    javascript之数组操作
    python中的类中属性元素加self.和不加self.的区别
    Q查询
    jQuery EasyUI的各历史版本和应用
    了解Entity Framework中事务处理
    C#中Abstract和Virtual的区别
    控制器post参数接收
    存储过程调用存储过程
    表变量、临时表(with as ,create table)
    LINQ TO SQL 实现无限递归查询
  • 原文地址:https://www.cnblogs.com/PYlog/p/8693891.html
Copyright © 2011-2022 走看看