首页 > 编程语言 >极客编程python入门-序列化

极客编程python入门-序列化

时间:2023-01-01 11:02:15浏览次数:45  
标签:极客 20 name python 88 JSON score 序列化


序列化


极客编程python入门-序列化_反序列化


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

序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。


Python提供了pickle模块来实现序列化。


>>> import pickle
>>> d = dict(name='Bob', age=20, score=88)


>>> f = open('dump.txt', 'wb')
>>> pickle.dump(d, f)
>>> f.close()


当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象,也可以直接用pickle.load()方法从一个file-like Object中直接反序列化出对象。


>>> f = open('dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'age': 20, 'score': 88, 'name': 'Bob'}


当然,这个变量和原来的变量是完全不相干的对象,它们只是内容相同而已。


JSON


Python内置的json模块提供了非常完善的Python对象到JSON格式的转换。我们先看看如何把Python对象变成一个JSON:


>>> import json
>>> d = dict(name='Bob', age=20, score=88)
>>> json.dumps(d)
'{"age": 20, "score": 88, "name": "Bob"}'


要把JSON反序列化为Python对象,用loads()或者对应的load()方法,前者把JSON的字符串反序列化,后者从file-like Object中读取字符串并反序列化:


>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> json.loads(json_str)
{'age': 20, 'score': 88, 'name': 'Bob'}


由于JSON标准规定JSON编码是UTF-8,所以我们总是能正确地在Python的str与JSON的字符串之间转换。

标签:极客,20,name,python,88,JSON,score,序列化
From: https://blog.51cto.com/apple0/5982823

相关文章

  • 写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!
    文章目录​​前言​​​​分析​​​​理想状态​​​​实际分析​​​​爬虫实现​​​​其他注意​​​​效果与总结​​前言在我们写​​文章(博客、公众号、自媒体)​......
  • 如何用python“优雅的”调用有道翻译
    文章目录​​前言​​​​分析​​​​分析url​​​​分析参数01​​​​分析参数02​​​​加密分析​​​​模拟请求​​​​注意点​​​​请求代码​​​​执行结果​......
  • [python] 基于paramiko库操作远程服务器
    SSH(SecureShell)是一种网络安全协议,能够使两台计算机安全地通信和共享数据。目前,SSH协议已在世界各地广泛使用,大多数设备都支持SSH功能。SSH的进一步说明见:深入了解SSH。SS......
  • python编程 ——从入门到实践——第四章,操作列表
    1、遍历列表——for循环的基本形式magicians=['alice','david','carolina']forainmagicians:#for循环会读取列表中的第一个字符串,然后和a对应,再打印,然后再读取第......
  • Python之路【第七篇】:线程、进程和协程
    1.Python线程Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。#!/usr/bin/envpython#-*-coding:utf-8-*-importthreadingimporttime......
  • buuctf-web-[极客大挑战 2019]PHP 1
    知识点:文件备份、反序列化打开网站后发现源码没有提示,页面提示“备份的好习惯”,用御剑扫后台,扫出www.zip,打开发现有几个php文件打开index.php发现关键代码<?phpin......
  • Python面向对象原理分析-元类MetaClass
    metaclass元类1.前戏对象是类实例化的结果classFoo(object):pass#第1步:调用Foo的__new__方法创建空对象。#第2步:调用Foo的__init__方法对对象进行初始化。o......
  • Python之路【第六篇】:socket
    1.Socketsocket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket起源于Unix,而Unix/Lin......
  • Python爬虫学习经历
    requests模块1.处理一个UA反爬importrequestscontent=input("请输入你要搜索的内容:")url=f"https://www.sogou.com/web?query={content}"headers={#添加......
  • 掌握Python中列表生成式的五个原因
    1.引言在Python中我们往往使用列表生成式来代替for循环,本文通过引入实际例子,来阐述这背后的原因。闲话少说,我们直接开始吧!2.简洁性列表生成式允许我们在一行代码中创建一......