拓展一下
Topic sourceps:指针以字节为单位
如果你的文件中保存的是中文,一个字为两字节,中文标点符号也是两字节,而英文或英文标点为一个字节
当你已经读取文件时,可以用指针返回到某个地方,比如文件开头
但当你返回到一个中文的中间时,比如移动到文件的第三个字节处,而恰好是一个中文字的中间,再次读取的时候就会报错:UnicodeDecodeError 解码错误
- 1
ps:指针以字节为单位
如果你的文件中保存的是中文,一个字为两字节,中文标点符号也是两字节,而英文或英文标点为一个字节
当你已经读取文件时,可以用指针返回到某个地方,比如文件开头
但当你返回到一个中文的中间时,比如移动到文件的第三个字节处,而恰好是一个中文字的中间,再次读取的时候就会报错:UnicodeDecodeError 解码错误
一盒噪噪
open函数本质上,是先查找路径中是否有此文件,如果有的话,直接打开。
如果没有的话,创建一个文件,再打开(所以可以用open函数在指定路径中创建一个文件)
打开模式:
'r' (默认) 以只读模式打开
'w' 以写入模式打开(写入的内容会覆盖已存在的文件内容)
'x' 如果文件已存在,会出现一个错误:FileExistsError
'a' 以写入模式打开,把写入的内容追加到末尾
'b' 以二进制模式打开
't' (默认)以文本模式打开
'+' 可读写模式(可与其他模式一起使用)
'U' 支持通用换行符
文件对象方法:
f.close()
f.read(size = -1) 默认为 -1 ,当未给定,或者给定负值时读取所有字符
f.readline()
f.write(str) 仅支持以写入模式打开的文件
f.weitelines(seq) seq为字符序列,且是一个返回字符串的可迭代对象
f.seek(offset,from) 指针,从from偏移offset个字节 (from=0代表起始位置,1代表当前位置,2代表文件末尾)
f.tell() 返回当前位置