栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python-基础】O/I——序列化讲解知识

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python-基础】O/I——序列化讲解知识


pickle:序列化
pickle是python种内置的一个模块,

作用:    保存时将对象储存在内存中的信息转化成十六进制(纯数据)

读取时将十六进制数据转化成对象储存在内存中的信息

pickle.dumps( ):将对象转化为数据

pickle.load( ):将文件中数据转化为对象

pickle.dumps( ):转化为数据

import pickle
                    # 将对象(变量)类型为字典的值转化为(二进制的纯数据)
d = {"NAME":"Hibari", "UID":"7565634", "TIME":"20200209"}
data = pickle.dumps(d)

print(data)         # 将(二进制的纯数据)值打印出来
print(type(data))
#输出(用16进制表示)
#=============================
b'x80x03}qx00(Xx04x00x00x00NAMEqx01Xx06x00x00x00Hibariqx02Xx03x00x00x00UIDqx03Xx07x00x00x007565634qx04Xx04x00x00x00TIMEqx05Xx08x00x00x0020200209qx06u.'
【class 'bytes'】
写入到文件

import pickle
d = {"NAME":"Hibari", "UID":"7565634", "TIME":"20200209"}

                                # 注意:文件模块请使用"wb"表示写入(二进制的纯数据)
with open("E:MyFile.txt", 'wb') as f:
    data = pickle.dumps(d)      # 将对象(变量)类型为字典的值转化为(二进制的纯数据)
    f.write(data)               # 将(二进制的纯数据)值保存到文件中

    #pickle.dumps(d , f)        # 该语句代替上面两个语句
    f.close()
输出:

由于记事本是由unicode编码控制的,而存入的是数据,而不是带字符编码的字符串,

因此数据被转化成unicode编码就发生了乱码的情况。


pickle.load( ):将数据导回对象


pickle.load( )可以把文件里的数据还原回去


# 以上面案例导出的文件为读取基础
#======================================
import pickle                   # 注意:文件模块请使用"rb"表示读取(二进制的纯数据)
with open("E:MyFile.txt", 'rb') as f:
    try:
        data = pickle.load(f)   # 读取数据并还原到data里
        print(data)
    except EOFError:            # 如果文件为空,则返回提示
        print("数据不存在", e)
    finally:
        f.close()
#输出
#==========================================
{'NAME': 'Hibari', 'UID': '7565634', 'TIME': '20200209'}
JSON:轻量通用数据类型
JavaScript Object Notation

JSON是啥?

JSON是和pickle类似的玩意

为什么要用JSON?

当数据要在程序与程序之间交流,不同语言之间交流时,

pickle所导出的数据不具有通用性(是外语,除了Python自己别人看不懂)

而JSON是以类似编程语言的储存方式储存字符串的

特点:

json类似字典,是以键值对应的方式储存的

JSON的数据类型:

json的数据类型和python的基本一致,只有None要改成null

{
    "myName": "Hibari",
    "myUID": [7, 5, 6, 5, 6, 3, 4],
    "myTime": {"DAY":10, "month":02, "Year":"2021"},
    "myBool": True,
    "myNone": null
}
json.dumps( ):转化成字符串


注意:

使用json储存数据,通常是将所有的数据需要放在一个字典中

一般设变量名为键,变量的值为键值

作用:

将值转化为字符串

官方文档:

(懒得抄了,列几个常用的就好了)

https://docs.python.org/zh-cn/3/library/json.html#json.dumps

import json
d = {"NAME":"Hibari", "UID":7565634, "TIME":"20200209"}
with open("E:MyFile.txt", 'rb') as f:
    data = json.dumps(d)    # 转化成字符串
    print(data)
    print(type(data))
#输出
#==========================================
{"NAME": "Hibari", "UID": 7565634, "TIME": "20200209"}

import json
d = {"NAME":"Hibari", "UID":7565634, "TIME":"20200209"}
data = json.dumps(d, sort_keys=True, indent=4, separators=(',', ': '))
print(data)
print(type(data))
#输出
#==========================================
{
    "NAME": "Hibari",
    "TIME": "20200209",
    "UID": 7565634
}
【class 'str'】


保存到文件

import json
d = {"NAME":"Hibari", "UID":7565634, "TIME":"20200209"}
data = json.dumps(d, sort_keys=True, indent=4, separators=(',', ': '))

with open("E:MyFile.txt", 'w') as f:
    f.write(data)
    f.close()


json.loads( ):将字符串转回对象


作用:将字符串转化回去

# 以上面案例导出的文件为读取基础
#======================================
import json
with open("E:MyFile.txt", 'r') as f:
    data = f.read()
    d = json.loads(s)
    print(d)
    print(type(d))
    f.close()
#输出
#==========================================
{'NAME': 'Hibari', 'TIME': '20200209', 'UID': 7565634}
【class 'dict'】

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977467.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号