概述
- 字符流文件的四种基本读写模式:r/w/a/x,都是要么只读要么只写的,强读强写会报错‘’
- 接下来要介绍的加强读写模式则是全部是可读可写的;
- 它们分别是:读优先的r+,覆写优先的w+,追加优先的a+;
- 它们之间的区别在于文件打开时,文件指针的位置何在;
读优先的加强模式r+
- 文件打开时,文件指针位于0的位置,便于从头开始读取文件;
- 因此我们称它是读优先的;
- 接下来可读可写;
file = open(r"../res/doc/1.txt", "r+", encoding="utf-8") print("当前文件指针在%d" % (file.tell())) # 可读可写 print(file.read(4)) print("当前文件指针在%d" % (file.tell())) # 对于ASCII字符,每字符指针移动1位,对于汉字,每字符指针移动3位 print(file.read(4)) print("当前文件指针在%d" % (file.tell())) # 继续移动文件指针到指定位置 file.seek(37) print(file.read(6)) # 写入内容 print("当前文件指针在%d" % (file.tell())) # 54 file.seek(54) # 写入之前应明确地seek到指定位置,否则会追加在末尾 file.write("全英文字母") file.close()
覆写优先的加强模式w+
- 文件打开时,内容被清空,自然文件指针也就位于0的位置;
- 这种模式先清空内容以便覆写,因此我们称它是覆写优先的;
- 接下来可读可写;
file = open(r"../res/doc/1.txt", "w+", encoding="utf-8") # 可读可写 file.write("锄禾日当午") print(file.tell()) file.seek(0) print(file.read()) file.close()
- 接下来可读可写;
file = open(r"../res/doc/1.txt", "a+", encoding="utf-8") print(file.tell()) # 可读可写 file.seek(0) print(file.read()) file.seek(15) file.write("\n编程真辛苦") file.close()