python文件操作

文件:可以永久保存数据

文件访问模式:

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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值