pickle:序列化
pickle是python种内置的一个模块,
作用: 保存时将对象储存在内存中的信息转化成十六进制(纯数据) 读取时将十六进制数据转化成对象储存在内存中的信息
pickle.dumps( ):将对象转化为数据 pickle.load( ):将文件中数据转化为对象
pickle.dumps( ):转化为数据
```python
import pickle
# 将对象(变量)类型为字典的值转化为(二进制的纯数据)
d = {“NAME”:”Hibari”, “UID”:”7565634”, “TIME”:”20200209”} data = pickle.dumps(d)
print(data) # 将(二进制的纯数据)值打印出来 print(type(data))
```python#输出(用16进制表示)#=============================b'\x80\x03}q\x00(X\x04\x00\x00\x00NAMEq\x01X\x06\x00\x00\x00Hibariq\x02X\x03\x00\x00\x00UIDq\x03X\x07\x00\x00\x007565634q\x04X\x04\x00\x00\x00TIMEq\x05X\x08\x00\x00\x0020200209q\x06u.'<class 'bytes'>
写入到文件
import pickled = {"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( )可以把文件里的数据还原回去
```python
以上面案例导出的文件为读取基础
======================================
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()
```python#输出#=========================================={'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 jsond = {"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"}<class 'str'>
```python
import json
d = {“NAME”:”Hibari”, “UID”:7565634, “TIME”:”20200209”}
data = json.dumps(d, sort_keys=True, indent=4, separators=(‘,’, ‘: ‘))
print(data)
print(type(data))
```python#输出#=========================================={"NAME": "Hibari","TIME": "20200209","UID": 7565634}<class 'str'>
保存到文件
import jsond = {"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 jsonwith 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'>

