【Python】-- 文件的读写操作(解决‘utf-8‘ codec can‘t decode byte 0xce in position 0: invalid continuation byte)

一、文件的打开/创建

open()

使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。

语法:open(name,mode,encoding)

其中,name:是要打开的目标文件名的字符串;

          mode:设置打开文件的模式:只读、写入、追加等;

          encoding:编码格式

mode模式描述
r以只读的方式打开文件,文件的指针将会放在文件的开头,这是默认模式。
w打开一个文件只用于写入,如果该文件已存在则打开文件,并从头开始编辑,原有内容会被删除。如果文件不存在,则创建新文件。
a打开一个文件追加内容,如果不存在,则创建并写入。

例:

f = open("D:/1.txt","r",encoding="UTF-8")

二、文件的读取

文件读取有三种方法:

  • read():读取整个文件的内容保存为字符串;
  • readline():逐行读取文件保存为字符串;
  • readlines():读取整个文件内容保存为列表。

1、read()

语法:文件对象.read(num)

其中,num表示从文件中读取的数据的长度(单位字节),没有传入则表示读取所有数据。

例:

f = open("D:/save_date.txt","r",encoding="UTF-8")
print(f.read(10))
print(f.read())
f.close # 关闭文件

2、 readline()

可以按照行的方式把文件中的内容进行一行读取,并且返回一个字符串。

3、readlines()

可以按照行的方式把整个文件中的内容进行一次性读取,并且返回一个列表,其中每一行的数据是一个元素。

例:

f = open("D:/save_date.txt","r",encoding="UTF-8")
print(f.readline())# 一次读取一行内容
print(f.readlines())
f.close # 关闭文件

4、with open

自动关闭文件。

语法:with open(name,mode,encoding)as f:

例:

with open("D:/save_date.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(line)

三、文件的写入

write()

语法:文件对象.write()

直接调用write,内容并未真正写入文件,而是会积攒在内存中,称为缓冲区;

当调用flush方法的时候,内容会真正写入文件。

例:

f = open("D:/save_date.txt","w",encoding="UTF-8")
f.write("111")
f.flush()
f.close()

四、seek()方法

语法:文件对象.seek(offset,whence)

参数offset表示文件指针移动的偏移量,可选参数whence表示从哪个位置移动文件指针:

  • whence=0,表示从文件起始位置移动
  • whence=1,表示从当前位置移动
  • whence=2,表示从文件结尾处移动

whence的默认值是0,即文件指针默认从文件起始位置移动。因此seek(0)表示将文件指针移动到文件起始位置,seek(0,2)表示文件指针移动到文件结尾处。注意当以文本文件模式“t”打开文件时,只能从文件开头移动指针,即whence必须为0

提示:汉字偏移量为2

五、注意

  • 写入文件不说明编码格式则文件内容汉字乱码,而读文件说明编码格式报错
  • 写入文件不说明编码格式则文件内容汉字乱码,读文件也不说明编码格式正常读出
  • 写入文件说明编码格式则文件内容正常,读文件也不说明编码格式乱码读出
  • 写入文件说明编码格式则文件内容正常,而读文件说明编码格式正常读出
  • 手动创建文件输入内容,而读文件不说明编码格式则乱码读出
  • 手动创建文件输入内容,读文件说明编码格式则正常读出

例:

#手动创建2.txt,加编码格式正常读出
file = "2.txt"
f = open(file,'r',encoding="UTF-8")
line = f.read()
print(line)
f.close()
//写入文件没有说明编码格式,而读取文件说明了,则报错
file = "3.txt"
f = open(file,'w')
f.write("我爱1")
f.close()
f = open(file,'r',encoding="UTF-8")
line = f.read()
print(line)
f.close()

报错内容:'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte 


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四月天行健

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值