• Python学习--14 序列化


    把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等。

    pickle

    pickle是Python语言特定的序列化模块,序列化的内容只能是Python才能反序列化。

    pickle.dumps(obj) #把任意对象序列化成一个bytes
    pickle.dump(obj, fp) #序列化到file-like Object(例如文件)里
    
    pickle.loads(bytes_obj) #反序列化
    pickle.load(fp) #从file-like Object(例如文件)里反序列化
    

    示例:

    # coding: utf-8
    import pickle
    
    d = dict(name='Bob', age=20, score=88)
    print(pickle.dumps(d))
    
    # 将序列化的bytes内容保存到文件中:
    fp = open('pickle.data', 'wb')
    pickle.dump(d, fp)
    

    输出:

    b'x80x03}qx00(Xx05x00x00x00scoreqx01KXXx04x00x00x00nameqx02Xx03x00x00x00Bobqx03Xx03x00x00x00ageqx04Kx14u.'
    

    反序列化:

    # coding: utf-8
    import pickle
    
    fp = open('pickle.data', 'rb')
    print(pickle.load(fp))
    

    输出:

    {'age': 20, 'score': 88, 'name': 'Bob'}
    

    如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。

    JSON

    Python内置的json模块提供了非常完善的Python对象到JSON格式的转换。

    json.dumps(obj) #序列化
    json.dump(obj, fp) #序列化到file-like Object(例如文件)里
    
    json.loads(str) #反序列化
    json.load(fp) #从file-like Object(例如文件)里反序列化
    

    示例:

    # coding: utf-8
    import json
    
    d = dict(name='Bob', age=20, score=88)
    print(json.dumps(d))
    

    输出:

    {"age": 20, "name": "Bob", "score": 88}
    

    JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

    JSON类型 Python类型
    {} dict
    [] list
    "string" str
    1234.56 int或float
    true/false True/False
    null None
  • 相关阅读:
    MapKit 大头针基本使用
    iOS获取文件的大小
    iOS截取图片方法
    iOS通知3种使用方法
    iOS12适配及兼容问题解决,xcode10问题
    Mac不使用iTunes导出照片
    Xcode 10 项目迁移 Multiple commands produce...
    tableView在UITableViewStylePlain的状态下取消悬浮效果(取消粘性效果)
    OC 字符串和字典的相互转化
    破解 Mac OS管理员密码 亲测可用
  • 原文地址:https://www.cnblogs.com/52fhy/p/6368104.html
Copyright © 2020-2023  润新知