day -16 序列化和反序列化

day -16 序列化和反序列化
# 练习:将100以内的素数(质数)打印到硬盘中(文件)
# 判断素数是一个独立的功能代码,将其写道一个函数中
def is_prime(num:int) -> bool:
    for x in range(2, int(num**0.5)):
        if num % x == 0:
            return False
    return True

with open(r'prime.txt','w', encoding='utf-8') as file:
    for i in range(2, 100):
        if is_prime(i):
       	 file.write(str(i)+'\n')
        # 或者file.write(f'{i}\n')
        # 或者 print(i, file=file)

1.对象序列化(serialization)和反序列化(deserialization)

1)序列化:把一个对象(字典、列表等)变成字符串(str)或者字节串(bytes)

2)反序列化:从字节串或者字符串中还原出一个对象(字典、列表等)

3)python标准库中有一个json / pickle的模块,可以支持我们做序列化和反序列化的操作

​ a. JSON ---->JavaScript Object Notation ------> JavaScript语言创建对象的字面量语法

let person{
    name: '小明',
    age: 23,
    sex: True
}
# Json格式的对象与字典长得很像,对象前加let,所以我们可以将字典转换成JSON格式的字符串,就可以写入文件中实现数据的持久化,这种数据格式也非常适合在两个系统(尤其是异构的系统)之间传输数据(因为它是纯文本),当我们说到JSON,更多的时候是把它当成一种数据交换格式

2.序列化

1)JSON序列化方法(用下面例子示例说明)


    'name': '张三',
    'age': 24,
    'sex': True,
    'friends':['李四''马超', '赵云'],
    'car': {
        'brand':'QQ',
        'max_speed': 120
    }
}

with open('penson.txt', 'w') as file:
    # 序列化
    # 第一种方法,json.dumps(序列对象),将序列对象转换成字符串,通过文件对象.write(内容)写入到文件中
    content = json.dumps(penson)
    file.write(content)
    # 第二种方法:json.dumps(序列对象),将序列对象转换成字符串,通过print关键字file=文件对象,将转换的字符串写入到文件中
    print(json.dumps(penson), file=file)
    # 第三种方法:json.dump(序列对象,fp=文件对象),将序列对象转换成字符串,并通过关键字fp=文件对象,将转换成的字符串写入到文件中
    json.dump(penson, fp=file)

2)pickle的序列化方法

with open(r'penson.dat', 'w') as file:
    pickle.dump(penson, file=file)

3.反序列化

1)JSON反序列化(还是以例子来说明)

# 将上面序列化的文件反序列化
with open(r'penson.txt', 'r') as file:
    # 反序列化,将字符串(或字节串)还原成字典(对象)
    # 第一种方法
    content = file.read()
    obj = json.loads(content)
    print(obj)
    # 第二种方法
    obj = json.load(fp=file)
    print(obj)

2)pickle反序列化(二进制)

with open(r'penson.dat', 'rb') as file:
    obj = pickle.load(file)
    print(obj)

3.联网获取数据

"""
URL --> 网址 --> 统一资源定位符 --> 能够唯一标识一个(网络)资源的符号
协议://用户名:口令@域名地址IP地址:端口/路径2/资源名称

URI -->统一资源标识符 --> URL +URN
urllib - 联网获取数据
urllib.urlopen 打开
from urllib.request import urlopen
import urllib
pip --> python的包管理工具
使用三方库 requests 可以非常方便的实现通过URL访问网络资源

可以使用python的包管理工具 pip 来安装和管理三方库一级三方工具
修改 pip 下载源为国内的镜像网站(推荐使用豆瓣网镜像)
pip config set global.index-url https://pypi.doubanio.com/simple
查找三方库:pip search requests
安装三方库:pip install requests
卸载三方库:pip uninstall requests
更新三方库:pip install -U trquests

协议 --> 规范和标准 -- 网络协议 --> 通过网络进行通信的双方要遵循的规范和标准

"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值