Python基础--IO流

什么是IO流

IO流(Input Output Stream)即输入输出流,指一种将数据读入内存和从内存输出的技术

作用

持久化数据,保证数据不再丢失
例如把数据存入硬盘u盘或者上传到云盘

IO的分类

数据类型
	|-- 字符流
	|-- 字节流
流的方向
	|-- 输入流
	|-- 输出流

操作IO流

open(‘文件路径’,‘操作方式’)

操作方式
-> r:只读的方式打开文件,默认方式,用于从文件中读取数据
-> w:只写的方式打开文件,用于向文件中写入数据
-> +:可读可写
-> x:创建文件并只写的方式打开文件,如果文件存在则报错
-> a:只写的方式打开文件,每次打开追加内容,而不覆盖数据
-> t:以文本操作方式打开文件
-> b:以二进制操作方式打开文件

最常用的是r和w,默认带有t,r等同于tr,w等同于tw
如果要操作二进制文件则要带b,即bw,br

以open方式打开文件,在操作完毕后要关闭文件

读入数据

f = open('a.txt','r')		
f.read()
f.close()

写入数据

f = open('a.txt','w')
f.write('字符串')
f.close()

with语句块

用with语句块打开文件就不需要再手动关闭文件了

with open("a.txt", "r") as f:
	f.read()
	# 操作IO流,不用关闭

对象序列化

当需要将列表、字典等非文本数据存入文件里时,就需要将数据先序列化成二进制数据存入,读取时再转化为原来的数据就可以实现对这些数据的存储了

pickle模块(二进制和对象之间的序列化)

	|-- dumps(obj)		# 将对象序列化成二进制数据
	|-- dump(obj,file)  #将一个对象序列化并存入文件,文件必须提前打开
	|-- loads		# 反序列化,将序列化成二进制数据重新转换为对象
	|-- load()

json模块(json字符串和对象之间的序列化)

	|-- dumps(obj)	
	|-- dump
	|-- loads		
	|-- load()

缓存

如果将一个特别大的文件(超过内存大小)直接打开会导致电脑蓝屏,因此需要限制文件的读取速度

f = open('a.txt','r')
while True:
	a = f.read(1024 * 1024 * 1024) 		#每次读1GB
	if a == '':
		break
f.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值