Day26笔记-Day25作业讲解&对象的序列化和反序列化&安装第三方库

一、对象的序列化和反序列化

Python中一切皆对象
对象的序列化:将Python中的对象持久化到磁盘上

对象的反序列化:将磁盘上一个文件中的内容转换为Python对象

注意:

​ 1.对象的序列化【写入】和反序列化【读取】通过pickle模块和json模块完成 2.Python中一切皆对象,包括类型:数字,字符串,列表,字典。元组,集合,类,函数,模块等

​ 3.pickle可以序列化一切类型,json常用于操作字典和列表

1.pickle模块
复制代码
# 1.f.write():使用普通文件的写入方式,只能操作字符串
class Person():
    def __init__(self,name,age):
        self.name = name
        self.age = age
per = Person("小明",10)
​
# TypeError: write() argument must be str, not list
# with open(r'data/f1.txt','w',encoding='utf-8') as f1:
#     f1.write(per)
​
# 2.对象的序列化:相当于写入
import pickle
​
'''
注意:
    a.pickle.dump(obj,f)进行序列化,相当于write()
    b.pickle.load(f)进行反序列化,相当于read()
    c.python对象被序列化之后,是二进制数据,所以打开文件使用wb或rb的模式
'''
with open(r'data/f1.txt','wb') as f1:
    pickle.dump(per,f1)
​
# 3.对象的反序列化:相当于读取
with open(r'data/f1.txt','rb') as f2:
    r = pickle.load(f2)
    print(r)  # <__main__.Person object at 0x0000018105C03D60>
    print(r.name,r.age)
2.json模块

JSON和Python中数据类型的对应关系JSON Python 表示object dict {}array list []
json.dump():将Python中的字典或列表对象序列化到指定的文件中json.dumps():将Python中的字典或列表对象序列化为json字符串

json.load():将指定的文件中的json字符串反序列化为Python中的字典或列表对象json.loads():将json字符串反序列化为Python中的字典或列表对象

复制代码
import json
data = {
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}
print(data)
print(type(data))
​
# 1.序列化
# json.dumps():将Python中的字典或列表对象序列化为json字符串
# 注意:ensure_ascii的默认只未True,表示对中文进行编码,如果希望中文能正常显示,则可以设置ensure_ascii为False
r1 = json.dumps(data,ensure_ascii=False)
print(r1)
print(type(r1))
​
# json.dump():将Python中的字典或列表对象序列化到指定的文件中
with open(r'data/city.json','w',encoding='utf-8') as f1:
    json.dump(data,f1,ensure_ascii=False)
​
# 2.反序列化
# json.loads():将json字符串反序列化为Python中的字典或列表对象
r2 = json.loads(r1)
print(r2)
print(type(r2))
​
# json.load():将指定的文件中的json字符串反序列化为Python中的字典或列表对象
with open(r'data/city.json','r',encoding='utf-8') as f2:
    r3 = json.load(f2)
    print(r3)
    print(type(r3))

二、安装第三方库

模块,也被称为库,其实相当于是一个工具

Python中的模块/库分为三大类

​ a.系统模块,特点:只需要import导入就可以使用,如:random math string csv pickle json等

​ b.自定义模块,特点:需要自己创建py文件,在该文件自定义函数或类

​ c.第三方模块,特点:需要先安装,然后再import导入使用,如:openpyxl docx requests bs4等

复制代码
import  openpyxl
​
'''
1.
    原生Python:比较干净的环境,其中默认只包含了pip,setuptools等
    Anaconda:其中包含了绝大多数的第三方库,常用的第三方库可能也已经包含在内了,但是不排除有的库不包含
    
2.如何安装第三方库
    方式一:在pycharm直接添加
        windows:File---->Settings---->Project:xxx---->Python Intepreter---->  +【install】--->搜索----》install Package
        Mac:Pycharm--->Perference---->Project:xxx---->Python Intepreter---->  +【install】--->搜索----》install Package
    方式二:在cmd中
        Windows:pip  install xxx
        Mac:pip3 install xxx
    方式三:Terminal【作用等同于cmd】
        Windows:pip  install xxx
        Mac:pip3 install xxx
​
3.问题说明
    问题一:pip不是内部或外部的命令
        原因:没有配置环境变量
        解决方案:将Python或Anaconda对应的路径全部添加到环境变量中
        D:\software\Anaconda
        D:\software\Anaconda\Library\mingw-w64\bin
        D:\software\Anaconda\Library\usr\bin
        D:\software\Anaconda\Library\bin
        D:\software\Anaconda\Scripts
    问题二:timed out
        原因:网络不好
        解决方案:切换网络  或者  切换镜像【pip  install xxx -i  镜像】
     
    国内 pip 镜像源包括但不限于以下几种:   
        阿里云Python镜像源:https://mirrors.aliyun.com/pypi/simple/
        豆瓣Python镜像源:https://pypi.douban.com/simple/
        清华大学Python镜像源:https://pypi.tuna.tsinghua.edu.cn/simple/
        中国科学技术大学Python镜像源:http://pypi.mirrors.ustc.edu.cn/simple/
        华中科技大学Python镜像源:http://pypi.hustunique.com/   
        
    命令:pip install pandas -i   https://pypi.douban.com/simple/          
'''  
相关推荐
oi..几秒前
从 0 到 1:文件上传漏洞的校验、绕过与真实场景利用
网络·笔记·计算机网络·安全·web安全·网络安全·xss
a9511416423 分钟前
Redis如何利用Redisson处理并发击穿
jvm·数据库·python
郝学胜-神的一滴8 分钟前
[ 力扣 1124 ] 解锁最长良好时段问题:前缀和+哈希表的优雅解法
java·开发语言·数据结构·python·算法·leetcode·散列表
戴西软件9 分钟前
戴西CAxWorks.VPG车辆工程仿真软件|假人+座椅双调整 汽车仿真效率直接拉满
java·开发语言·人工智能·python·算法·ui·汽车
2401_887724509 分钟前
如何防止SQL注入利用存储过程_确保存储过程不拼字符串.txt
jvm·数据库·python
财经资讯数据_灵砚智能10 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月16日
大数据·人工智能·python·信息可视化·自然语言处理
林会11 分钟前
DeerFlow本地部署!调用本地大模型
python·开源
一只机电自动化菜鸟15 分钟前
一建机电备考笔记(21):石油化工设备(含考频+易错点)
经验分享·笔记·学习·职场和发展·课程设计
m0_7164300715 分钟前
Laravel 迁移中外键约束错误的成因与修复方案.txt
jvm·数据库·python
Pentane.15 分钟前
力扣HOT100:T.1 两数之和|循环遍历算法笔记及打卡(12/100)
c++·笔记·算法·leetcode