python中IO流和对象序列化实例分析
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了python中IO流和对象序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中IO流和对象序列化实例分析文章都会有所收获,下面我们
千家信息网最后更新 2025年02月01日python中IO流和对象序列化实例分析
这篇文章主要介绍了python中IO流和对象序列化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中IO流和对象序列化实例分析文章都会有所收获,下面我们一起来看看吧。
一.IO流的操作
(1).什么是IO流(Input Output Stream)?
IO流说的主要是计算机的输入和输出操作。常见的IO操作,一般说的是内存。
IO流是一种常见的持久化(永久保存)技术:将数据从内存输出到磁盘保存下来。
(2).IO流的分类
根据数据流动(站在内存的角度上来说):输入流、输出流
根据数据的类型:字符流、字节流
注:
字符流:字符只能操作有字符的数据(读到末尾是’’)
字节流:字节是可以操作一切数据的(读到末尾是b’’),字节流操作大数据,不建议一次性读取
(3).python怎么操作IO流?使用open()全局函数,用于打开本地文件,返回值是一个IO流对象
#open()函数的格式open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)mode模式有: 'r' open for reading (default) 'w' open for writing, truncating the file first 'x' create a new file and open it for writing 'a' open for writing, appending to the end of the file if it exists 'b' binary mode 't' text mode (default) '+' open a disk file for updating (reading and writing) 'U' universal newline mode (deprecated)encoding编码使用:默认为none,使用的时候要用,encoding="utf-8"
通常open()函数要与read()函数一起使用,read()函数用于读取IO流对象的值,除了read()函数还有以下这些:
1.read(size=-1) #读取,参数可以有也可以没有 readline() #按行读 readlines() #按多行读 #1.没有参数时,表示一次性读完 >>> f=open("G:\Python\python练习\day09\a.txt",encoding="utf-8") >>> f.read() #第一次读全部读完 '我爱我的祖国' >>> f.read() #第二次读为空 '' >>> f.close() #自动执行一次flush #2.有参数时,通常用于读字节数据。 表示按照参数读,这样若是读字节数据时,对内存有利,且读取速度快,不会让电脑出现死机情况 >>> f=open("G:\Python\python练习\day09\a.txt",encoding="utf-8") >>> f.read(2) #第一次读 '我爱' >>> f.read(2) #第二次读 '我的' >>> f.read(2) #第三次读 '祖国' >>> f.close() #自动执行一次flush2.write(data) #将内容写入到文件 >>> f=open("a.txt","rb") >>> data=f.read(4) >>> data b'\xba\x8c\xe7\x8b' >>> f1=open("b.txt","wb") >>> f1.write(data) #将f的字节数据写入f1 4 >>> f1.close() >>> f.close() >>> f1=open("b.txt","rb") #验证b.txt文件写的是否是data >>> f1.read() b'\xba\x8c\xe7\x8b' >>> f1.close()3.writelines()#将多个数据写入4.flush() #刷新缓存区5.close() #关闭file对象,注意close自动的调用flush进行最后的文件刷新
(4).with 语句块(与IO流搭配,可以自己去关IO流(close()))
格式: with open("user.dat","wb") as f: f.write(save_users)
二.对象序列化
(1).什么是对象序列化?
将对象(容器、对象等)这种抽象的概念转化成真正存储字符或字节数据的过程
(2).对象序列化怎么实现?两个模块:pickle模块、json模块
json模块:可以将对象转换为字符数据
pickle模块:可以将对象转换成字节数据
(3).两个模块详情:
一.pickle模块:将对象序列化成字节数据 >>> import pickle >>> dir(pickle) 'dump', 'dumps' ,'load', 'loads'1.dumps() #将对象序列化成字节数据,一个参数,用于放对象 >>> ls=[1,2,3,4] >>> import pickle >>> data=pickle.dumps(ls) #将ls序列化成字节数据存到data >>> data b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.' >>> f=open("b.txt","wb") >>> f.write(data) #将序列化的字节数据写入b.txt文件 16 >>> f.close() >>> f=open("b.txt","rb") #验证b.txt文件写的是否是data >>> f.read() b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.' >>> f.close()dump() #将对象序列化成字节数据,并且保存到file,两个参数,用于一个放对象,一个放存的文件 >>>pickle.dump(ls,open("a.txt","wb"))2.loads() #将一个字节数据对象反序列化成本身对象 >>> f=open("b.txt","rb") >>> data=f.read() >>> pickle.loads(data) ['a', 1, 2]load() #将一个文件的字节数据对象反序列化成本身对象 >>> pickle.load(open("b.txt","rb")) ['a', 1, 2]二.json模块:可以将对象序列化成字符数据 >>> import json >>> dir(json) 'dump', 'dumps', 'load', 'loads'1.dumps() #将对象序列化成字符数据,一个参数,用于放对象 >>> ls=[1,2,3,4] >>> data=json.dumps(ls) >>> f=open("b.txt","w") >>> f.write(data) 12 >>> f.close() >>> f=open("b.txt") >>> f.read() '[1, 2, 3, 4]' >>> f.close()dump() #将对象序列化成字符数据,并且保存到file,两个参数,用于一个放对象,一个放存的文件 >>> ls=['a','b',1,2] >>> json.dump(ls,open("b.txt","w")) >>> f=open("b.txt") >>> f.read() '["a", "b", 1, 2]' >>> f.close()2.loads() #将一个字符数据对象反序列化成本身对象 >>> f=open("b.txt") >>> data=f.read() >>> json.loads(data) ['a', 'b', 1, 2]load() #将一个文件的字符数据对象反序列化成本身对象 >>> json.load(open("b.txt")) ['a', 'b', 1, 2]
关于"python中IO流和对象序列化实例分析"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"python中IO流和对象序列化实例分析"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
对象
数据
序列
字节
字符
文件
参数
模块
函数
实例
实例分析
分析
两个
内存
内容
知识
utf-8
输出
一次性
常见
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
绘画主题网络安全手抄报
赚钱软件开发什么好
多服务器的游戏有哪些
应用技术与网络技术哪个好
北京恒创互联网科技
简单tcp服务器端程序
文职人员网络安全心得体会
mc基岩版主播的生存服务器推荐
扫码录入数据库软件
计算机网络技术三级报名费用
新软件开发选址
数据库sql修改元组
广州兴化互联网科技学校
js 远程数据库数据库
江西曙光服务器虚拟化技术
是数据库的最高权限使用者
腾讯云服务器怎么在桌面
关于数据库的三级模式结
浪潮服务器和华为服务
深圳信托付互联网科技
看我国网络技术为人生光明
滨湖区软件开发项目信息
软件开发用友对接
增加dns解析服务器地址
我与网络安全简介
软件开发项目计划书模板
姚明数据库技术
淮安软件开发大概要多少钱
gaussdb数据库跨库同步
常用服务器和数据库