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()

 

posted @ 2021-05-17 16:33  Aliwall  阅读(612)  评论(0编辑  收藏  举报