12. IO操作
什么是IO流?
input output stream ---------主要用于输入和输出(一般磁盘和内存)
IO操作是一种持久化操作
python操作IO流 ------------ open()
第一个参数:既可以是文本字符也可以字节(文件的路径)
第二个参数:表示的是打开文件的方式
操作open函数的步骤:
f = open(“path”,“r”)
f.read()
f.close()
IO流的分类:
根据流动的方向(站在内存的角度):输入流和输出流
根据数据类型:字节流(图片、视频、音频等)和字符流
12.1 IO操作字符数据
不覆盖原本的内容:
mode=“r” “w” “a” ------ 本质”rt“ “wt” “at” t ------------ text
12.2 IO操作字节数据
b ------ 字节 rb wb ab
字节可以读取字符数据,相反不可以
注意:字节数据过大的时候,不建议一次性读取
数据的备份:
方法一:
def copy_file(name,dest):
f1=open(name,'rb')
f2=open(dest,'wb')
f2.write(f1.read())
if __name__ == '__main__':
copy_file("C:\\Users\\dell\\aa.txt","C:\\Users\\dell\\c.txt")
方法二:
def copy_file(name,dest):
f=open(name,'rb')
f2=open(dest,'wb')
# f2.write(f.read())
while True:
#以兆M为单位进行读取
data=f.read(1024*1024)
if data==b'':
print('读取完成')
break
else:
f2.write(data)
f.close()
f2.close()
if __name__=='__main__':
copy_file("E:\\360downloads\\a.jpg","C:\\Users\\dell\\d.jpg")
方法三:
from os import path
def copy_file():
st="C:\\Users\\dell\\d.jpg"
print("输入需要备份的文件:C:\\Users\\dell\\d.jpg")
dest="C:\\Users\\dell\\Desktop"
print("输入要保存的路径:C:\\Users\\dell\\Desktop")
f=open(st,'rb')
filename=st[st.rfind("\\")+1]
print(filename)
f2=open(path.join(dest,filename),'wb')
while True:
#以兆M为单位进行读取
data=f.read(1024*1024)
#读到空为止 '' b''
if data==b'':
print('读取完成')
break
else:
f2.write(data)
f.close()
f2.close()
if __name__=='__main__':
copy_file()
方法四:
from os import path
import uuid
def copy_file():
#src="C:\\Users\\dell\\d.jpg"
src = input("请输入你要备份文件的路径:")
#dest="C:\\Users\\dell\\Desktop"
dest = input("输入你要保存的路径:")
f = open(src,"rb")
filename = src[src.rfind("\\") + 1:]
#时间戳也可不重复
random_uuid = uuid.uuid4().hex
print(random_uuid)
filename = random_uuid + filename
print(filename)
f1 = open(path.join(dest,filename),"wb")
# f1.write(f.read())
while True:
#以M为单位进行读取
data = f.read(1024 * 1024)
#读到空的时候 b"" ""
if data == b"":
print("读取完成")
break
else:
f1.write(data)
f.close()
f1.close()
if __name__=='__main__':
copy_file()