python 文件混合读写模式 mode='r+'
# 常用 混合模式 mode r+ 读写混合模式. # 默认起始坐标为0,直接写入会覆盖原文件的内容. # 使用 f.seek(0,2) 把光标移到最后再进行写入操作. # f.read()读操作后光标会移到最后. # f.seek(0) # 0 代表从开文件头开始算起. seek(5,0)开头第5个字符起. # f.seek(1) # 1 代表从当前位置开始算起. seek(5,1)当前位置起第5个字符起. # f.seek(0,2) # 2 表示从文件末尾算起, 0,2移动到文件倒数第0个字节, -1,2 倒数第一个字节, -2,2 倒数第二个字节. # f.truncate() # 从当前位置截断文件. 先使用 f.seek(0,2)把光标移到最后.再使用此方法能返回当前文件内字符位数. # f.truncate(50) # 从起始位置保留50位后面的截断.内容不足50位用空补齐. # print(f.readable()) # f.readable 判断文件是否可读. # print(f.seekable()) # 判断文件是否可读. #驱动 终端不可读 # print(f.writable()) # 判断文件是否能写入
1 f = open(file='D:/OP/Logr+.txt', mode='r+', encoding='utf-8') 2 3 f.seek(0,2) # 把光标移到最后 # 2表示从文件末尾算起, 0,2移动到文件倒数第0个字节, -1,2 倒数第一个字节, -2,2 倒数第二个字节. 4 count = (f.truncate()) # 从当前位置截断文件. 能返回当前文件内字符位数. 需先使用 f.seek(0,2) 把光标移到最后 5 print('打开文件后文本总数:', count) 6 7 f.seek(0) # 把光标移动起始位置 8 data = f.read() 9 print("写入前的文件内容: 1\n",data) 10 11 # 写入文件.使用read()读取操作后,光标默认在末尾. 12 # 打开文件后默认起始坐标为0,直接写入会覆盖原文件的内容. 13 # 推荐使用 f.seek(0,2) 把光标移到最后再写 14 f.write('\n测试r+ 写入A') 15 16 data2 = f.read() 17 # 写入操作后直接使用f.read()的打印内容为空. 18 # 因为写入操作后光标移到文件最后,后面无内容. 实际写入的内容已保存到文件. 19 print("写入操作后直接read()读取内容,开始2:",data2,"结束2") 20 21 f.seek(0) # 光标移到起始 22 data3 = f.read() 23 print('seek(0)后 读取的文件内容3:\n',data3,"\n结束3") 24 25 # read()后光标在末尾 26 count = (f.truncate()) # 从当前位置截断文件. 能返回当前文件内字符位数. 需先使用 f.seek(0,2) 把光标移到最后 27 print('写入后文本总数:', count) 28 29 f.truncate(50) # 从起始位置保留50位后面截断. 30 31 f.close()