1. 操作文件的16种模式
#打开模式 w write 写入模式 文件不存在则创建文件,存在的话则打开文件并清空内容,并且将文件指针放在文件的开头 r read 读取模式 文件不存在则报错! 存在的话则打开文件,并且将文件指针放在文件的开头 a append 追加模式 文件不存在则创建文件,存在的话则打开文件,并且将文件指针放在文件的末尾 x xor 异或模式 文件已存在则报错! 不存在的话则创建文件,将文件指针放在文件的开头 #扩展模式 (配合打开模式的辅助模式,自己单独不能使用) + plus 增强模式(可以让文件具有读写功能) b bytes bytes模式(二进制字节流) #模式一共16种 w,w+,wb,wb+ r,r+,rb,rb+ a,a+,ab,ab+ x,x+,xb,xb+
# wb 和 rb 模式 二进制字节流模式 (注意点:使用字节流模式的时候, 不要指定 encoding) fp = open("test.txt", mode="wb") st = "好晴朗" res = st.encode("utf-8") fp.write(res) fp.close() # 注意:一定要记得关闭文件
2. 编码与解码函数
将字符串和字节流(Bytes流)类型进行转换 (参数写成转化的字符编码格式)
encode() 编码 将字符串转化为字节流(Bytes流)
decode() 解码 将Bytes流转化为字符串
st = "今天" bt = st.encode("utf-8") print(bt) # byte 类型 res = bt.decode("utf-8") print(res) # str 类型
3. with...as...语法
with open(filename, mode='w+', encoding='utf-8') as fp: pass # with 语法 自动关闭文件 相当于帮你执行了fp.close()
4. 文件相关函数
read() 功能: 读取字符的个数(里面的参数代表字符个数) seek() 功能: 调整指针的位置(里面的参数代表字节个数) # 注意有中文的情况 , 如果移动错误,有可能读取不出来。# 把光标移动到文件末尾 seek(0,2),把光标移动到文件行首 seek(0) tell() 功能: 当前光标左侧所有的字节数(返回字节数) readline() 功能: 读取一行文件内容 readlines() 功能:将文件中的内容按照换行读取到列表当中 writelines() 功能:将内容是字符串的可迭代性数据写入文件中 参数:内容为字符串类型的可迭代数据 truncate() 功能: 把要截取的字符串提取出来,然后清空内容将提取的字符串重新写入文件中 (字节) readable() 功能: 判断文件对象是否可读 writable() 功能: 判断文件对象是否可写 flush() 功能:刷新缓冲区 flush。当文件关闭、整个程序运行结束、缓冲区写满了或者手动刷新缓冲区的时候自动刷新缓冲区。
附录:编码
字符:无论是什么语言,独立的一个文字就是一个字符 存储单位: Byte 字节 bit: 位 1B = 8b B:字节, 1Byte = 8bit 字符大小: 无论何种字符集:英文和数字都是一个字节,汉字,韩文,日文等亚洲文字采用多个字节存储 GB系列编码:存储一个汉字使用2个字节 (国标编码:例如: gbk2312 ) UTF系列编码:存储一个汉字使用3个字节(国际通用:例如: utf-8 ) 字符编码种类: (把编码看成一个密码本,每一个字符在计算机中都是个二进制) 英文原始编码: ASCII码 -> 最早的字符编码格式->仅支持英文和特定的符号 中文编码: GB2312 : 包含5000个常用汉字的标准 GB18030: 升级版本的标准,大概15000个汉字 GBK : 包含所有中文汉字的编码(推荐) BIG5 : 繁体中文编码 万国码: unicode 包含世界上所有的文字(无论什么字符 都按照4个字节表示) utf-8 可变长的unicode编码。utf-8编码格式下,默认一个中文三个字节,一个英文或符号占用一个字节