文件:可以永久保存数据
文件访问模式:
r :只读。文件不存在会崩溃
w:只写。1. 如果文件不存在会创建文件兵写入数据 2. 如果文件存在,那么会把文件中原有数据先清空,然后再写入,
a:追加写入
b:以二进制方式操作文件
wb:以二进制方式写入数据
ab:以二进制方式追加写入数据
rb:以二进制方式读入数据
r+, w+, a+ 支持读写但是要看前面的主模式
rb+, wb+, ab+ 支持二进制方式读写操作
r模式
#打开文件使用open函数
file=open("1.txt","r")
file.read()
file.close()
w模式
如果使用w模式每次打开文件会先清空文件再重新写入
file=open("1.txt","w")
file.write("hello")
file.close()
打开文件后多次写入数据不会覆盖前面的数据
file=open("1.txt","w",encoding="utf-8")
file.write("hello")
file.write("mizhenmei")
file.close()
查看编码格式
print(file.encoding)
#windows开发需要指定编码格式UTF-8
a模式
file=open("1.txt","a",encoding="utf-8")
file.write("hello")
file.write("mizhenmei")
file.close()
python文件中若为python2则需要指定编码格式
rb模式
如果是二进制模式,不需要指定编码格式
file=open("1.txt","rb",encoding="utf-8") #这是错误的
file=open("1.txt","rb") #这是正确的
file_data=file.read()
#对二进制数据进行utf-8解码操作,二进制到字符串叫解码
contend=file_data.decode("utf-8")
字符串到二进制叫编码
对字符串进行utf-8编码得到二进制数据
file=open("1.txt","wb") #这是正确的
content="hello 哈哈"
#对二进制数据进行utf-8解码操作,二进制到字符串叫解码
file_data=content.encode("utf-8")
file.write(file_data)
file.close()
读取文件的操作,read
file=open("1.txt","r",encoding="utf-8")
#读取指定长度数据,rb模式下读取字节数
file_data=file.read(1)
#注意点:在utf-8编码格式下一个汉字占三个字节,一个字母占三个字节
file=open("1.txt","rb")
#读取指定长度数据
file_data=file.read(10)
根据指定的文件指针读取数据
查看文件指定位置
file.tell()
file=open("1.txt","rb")
#查看文件指定位置
result=file.tell()
print(result)
file.seek(7) #从指针位置后7位读取数据
#查看文件指定位置
result=file.tell()
print(result)
file_data=file.read()
file_data.decode("utf-8")
file.close()
readline
读取一行数据,遇到换行“\n”表示结束
readlines
据说是因为读取是有一个“\n”,而print也有一个“\n”所以就多了一个换行
拷贝文件
1.打开源文件
2.打开目标文件准备写入数据
file=open("1.txt","rb") #rb模式:比较通用的模式,可以兼容不同类型的文件
#读取文件
result=file.read()
#2.打开目标文件准备写入数据
dst_file=open("2.txt","wb") #dst_file=open("aa/2.txt","wb") 可以指定拷贝后的文件路径
dst_file.write(result)
dst_file.close()
file.close()
模拟大文件的拷贝
file=open("1.txt","rb") #rb模式:比较通用的模式,可以兼容不同类型的文件
#循环读取文件中的数据
while True:
result=file.read(1024)
if len(result)>0: ##或者 if result:
#表示有数据
dst_file.write(result)
else:
print("数据读取文件完成",result) # b"" 为空
break
dst_file.close()
file.close()