IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 对象序列化(Python) -> 正文阅读

[Python知识库]对象序列化(Python)

对象序列化

什么是对象序列化?
列表、字典、集合和元组都是抽象的概念,需要把对象持久化操作,所以需要序列化
是把对象这种抽象的概念持久化到磁盘上,换句话说就是将对象转为字节和字符

1.pickle

将对象转化为字节数据

>>> import pickle 
>>> dir(pickle)

dumps ------ 将对象序列化为字节数据

>>> ls = [1,2,3,4,5] 
>>> data = pickle.dumps(ls) 
>>> data b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.' 
>>> f = open("a.dat","wb") 
>>> f.write(data) 
26
>>> f.close()

loads ------ 将字节数据反序列化为对象

>>> f = open("a.dat","rb") 
>>> show = f.read() 
>>> show b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.' 
>>> show = pickle.loads(show) 
>>> show 
[1, 2, 3, 4, 5]

dump ------ 将对象序列化为字节数据并且保存到file中

>>> ls 
[1, 2, 3, 4, 5] 
>>> pickle.dump(ls,open("b.dat","wb"))

load -------- 将file字节数据反序列化为对象

>>> pickle.load(open("b.dat","rb")) 
[1, 2, 3, 4, 5]

2.json

将对象序列化为字符数据
import json
dir(json) ------- 查看模块里面的方法
dumps loads dump load

>>> d = {"usename":"zhangsan","age":18} 
>>> type(d) 
<class 'dict'> 
>>> json.dumps(d) 
'{"usename": "zhangsan", "age": 18}' 
>>> s = json.dumps(d) 
>>> f = open("a.txt","w") 
>>> f.write(s) 
34
>>> f.close() 
>>> f = open("a.txt","r") 
>>> ss = f.read() 
>>> ss 
'{"usename": "zhangsan", "age": 18}' 
>>> json.loads(ss) 
{'usename': 'zhangsan', 'age': 18} 
>>> dd = json.loads(ss) 
>>> dd 
{'usename': 'zhangsan', 'age': 18} 
>>> type(dd) 
<class 'dict'>

注意:json模块一般是用来序列化字典对象
练习:将登录注册操作进行序列化操作

    user["password"] = password_md5(password) 
    users.append(user) 
    #验证 
    print(users) 
    #将users持久掉 
    print("开始保存用户") 
    save_data() 
def exits_user(username): 
    for i in users: 
        if i.get("username") ==username: 
            #print("对不起,该用户已经存在,请请重新输入") 
            return True 
    return False 
def is_login(username,password): 
    for i in users: 
    if i.get("username") == username and i.get("password")==password: 
        print("登录成功") 
        return True 
    return False 
def login(): 
    username = input("输入用户名:") 
    password = input("输入用户密码:") 
    #加密密码 
    password = password_md5(password) 
    # for i in users: 
    # if i.get("username") == username and i.get("password")==password: 
    # print("登录成功") 
    # return 
    if is_login(username,password): 
        print("恭喜你登录成功") 
    else:
        print("对不起,登录失败,请重新登录")  
    init() 
while True: 
    #独立的界面 
    # print("~*"*20) 
    # print("\t\t 1.用户注册") 
    # print("\t\t 2.用户登录") 
    # print("\t\t 3.退出系统") 
    # print("~*"*20) 
    # choice = input("请输入您要操作的选项:") 
    choice = main() 
    if choice == "1": 
        print("用户注册") 
        register() 
    elif choice == "2": 
        print("用户登录") 
        login() 
    elif choice == "3": 
        print("显示所有用户") 
        print(users) 
    else:
        print("程序正常退出") 
        sys.exit(0)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:00:09  更:2021-12-05 12:01:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:21:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码