11. IO操作
什么是IO流?
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出
input output stream ---------主要用于输入和输出(一般磁盘和内存)
IO操作是一种持久化操作
python操作IO流 ------------ open()
第一个参数:既可以是文本字符也可以字节(文件的路径)
第二个参数:表示的是打开文件的方式
操作open函数的步骤:
f = open(“path”,“r”)
f.read()
f.close()
IO流的分类:
根据流动的方向(站在内存的角度):输入流和输出流
根据数据类型:字节流(图片、视频、音频等)和字符流
流的分类
r:输入流
w:输出流
b:字节流
t:字符流
file
表示一个文件的具体路径(也可以是文件名称)
mode
表示一个字符串(mode默认是tr)
r:read表示输入流
w:write表示输出流
t:表示字符流
b:表示字节流
a:表示追加输出
encoding
表示编码,主要用来表示字符的编写格式
IO对象的方法
close():关闭流
closed():判断流是否关闭
encoding():编码
flush():刷新流
read():读取输入
readline():读取一行数据
readlines():读取多行
write():写入数据
writelines(): 多行写入
注意:IO流一定要及时关闭,避免资源的占用以及避免出现异常
11.1 IO操作字符数据
不覆盖原本的内容:
mode=“r” “w” “a” ------ 本质”rt“ “wt” “at” t ------------ text
11.2 IO操作字节数据
b ------ 字节 rb wb ab
字节可以读取字符数据,相反不可以
注意:字节数据过大的时候,不建议一次性读取
数据的备份:
import uuid
from os import path
def copy_file():
src=input("请输入你要备份的文件路径")
dest=input("请输入你要保存的文件路径")
f=open(src,"rb")
#f2=open(dest,"wb")
filename=src[src.rfind("\\")+1:]
random_uuid=uuid.uuid4().hex
print(random_uuid)
filename=random_uuid+filename
print(filename)
f2=open(path.join(dest,filename),"wb")
#f2.write(f.read())
while True:
data=f.read(1024*1024)
if data==b"":
print("完成")
break
else:
f2.write(data)
f.close()
f2.close()
if __name__=="__main__":
copy_file()