前言
根据上一片文章我们知道文件读写模式read这个功能只能读取一遍,如果再次读取下面则是空白,这个时候其实就是因为读取完我们的光标到数据尾巴去了,后面没有内容了,所以我们在想读取他的内容就是空白啦,这一篇文章我们就讲讲怎样移动光标再次读取就不是空白吧。
提示:以下是本篇文章正文内容,下面案例可供参考
一、文件内光标的移动
a.txt内容:Python梅金牛牛牛
1.T文本模式
with open(r'a.txt', 'r', encoding='utf8') as f:
value = f.read(9) # 在文本模式下read括号内的数字表示读取几个字符
print(value)
esult:Python梅金牛
2.B二进制模式
with open(r'a.txt', 'rb') as f: # 不要忘记B模式不需要指定编码环境噢
value = f.read(9 ) # 注意b模式里面的数学不代表一个字符
#(英文1个bytes 中文3个bytes 所以R and B 里面的意义不一样)
print(value.decode('utf8')) # 因为是二进制所以需要解码UTF8
resul:Python梅
3.补充知识
上面两个实例也看出来了,如果我们需要特定去计算光标的位置比较麻烦,所以我们还是有方法的。
tell() 获取光标移动之后的当前位置
seek(offset,whence) offset控制光标移动的位置 whence模式
seek(0,0) 前面一个0代表光标移动的位置 后面一个0表示模式 总共二个模式
1.0和1默认模式表示光标开头位置 2. 2表示结尾位置 注意1和2只能在二进制模式使用
tell基本方式:
with open(r'a.txt', 'r', encoding='utf8') as f:
value = f.read(9) # Python梅金牛,牛牛 注意9到,哦
print(f.tell())
rusel:15 # 这就是当前字符位置
seek基本方式:
with open(r'a.txt', 'r', encoding='utf8') as f:
value = f.read # 🖱️Python梅金牛,牛牛
print(f.seek(0, 0)) #0开头模式
rusel:0
with open(r'a.txt', 'r', encoding='utf8') as f:
value = f.read # Python梅金牛,牛牛🖱️
print(f.seek(0, 2)) #2结尾模式
rusel:21
二、文件内数据的修改
1.覆盖写
什么叫做颠覆写,颠覆写就是将原来的文件删除掉然后在同一位置创建一个新的文件命名一样叫做颠盖写
with open(r'example.txt','r',encoding='utf8') as f: # 打开文件example命名f
data = f.read() # 把f里面的内容赋值给data
new_data = data.replace('DSB','NB') # 再把里面的dsb更改为nb赋值给new_data
with open(r'example.txt','w',encoding='utf8') as f1: # 打开新建一个文件同样名称example文件
f1.write(new_data) # 把new_data赋值给f1所以f1里面的内容是原本的example文件内容
2.重命名
重命名就是把新的文件命名这就是重命名
import os # 打开两个文件
with open('demo.txt', 'r', encoding='utf8') as read_f, \
open('.demo.txt.swap', 'w', encoding='utf8') as wrife_f:
for line in read_f: # 循环打印第一个文件demo.txt
wrife_f.write(line.replace('NB', 'SB')) # 第一个列表里面的内容nb改成sb然后命名给第二个文件
os.remove('demo.txt') # 删除文件
os.rename('.demo.txt.swap', 'demo.txt') # 重命名文件
三、文件读写模式
模式(默认模式) | B | + | b+ |
---|---|---|---|
R | RB | R+ | RB+ |
W | WB | W+ | RB+ |
a | AB | A+ | RB+ |
模式 | 描述 |
---|---|
R | 打开一个文件只能用来读,不能做其他操作(默认模式)。 |
W | 如果该文件已存在则删除里面的内容等待输入。没有文件则新建文件空白等待输入,不能做其他操作。 |
A | 如果没有文件则是新建文件,等待输入,如果文件已存在则是在文件数据的结尾等待输入。 |
RB | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
WB | 以二进制格式打开一个文件用于只写。文件指针将会放在文件的开头。如果该文件已存在则删除里面的内容等待输入。一般用于非文本文件如图片等。 |
AB | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件进行写入。 |
R+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
W+ | 如果该文件已存在则删除里面的内容等待输入。没有文件则新建文件空白等待输入,不能做其他操作。 |
A+ | 如果没有文件则是新建文件,等待输入,如果文件已存在则是在文件数据的结尾等待输入。 |
RB+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
WB+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。如果该文件已存在则删除里面的内容等待输入。一般用于非文本文件如图片等。 |
AB+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
总结
文件操作的简介、操作模式、操作方法、 光标移动、数据修改、以上都是文件处理的全部详解操作,有错误或不解的地方请指出,如果这篇文章对你有所帮助请
点赞收藏+关注
谢谢支持!