Python-文件高级操作-控制文件指针的移动

#指针移动的单位都是以bytes/字节为单位
#只有一种情况特殊:
#t模式下的read(n),n代表的是字符个数
i.txt
上啊#换行
哈哈嘿嘿
with open(r"i.txt",mode="tr",encoding="utf-8") as tr:
    res=tr.read(2)  #读出文本文件中2个字符(1个英文算一个字符1个汉字也算一个字符)
print(res,type(res),len(res))
#上啊 <class 'str'> 2


#seek():指针的移动都是以bytes为单位
#seek(n,模式):n指的是移动的字节个数(偏移)
#模式:
0:参照物是文件开头位置
seek(9,0)
seek(3,0) #指针在3

1:参照物是当前指针所在位置
seek(9,1)
seek(3,1) #指针在12
 2:参照物是文件末尾位置,应该倒着移动
seek(-9,2) #指针在3
seek(-3,2) #指针在9

#tell()获取文件指针当前的位置

#强调:只有0模式可以在t模式下使用,0、1、2模式必须在b模式下使用

#一个中文是3个bytes
#0模式在b模式下使用
with open(r'i.txt',mode='br') as br:
br.seek(6,0) #i.txt文本文件中是中文字符串,一个中文字符占3个bytes字节
print(br.tell()) #6 #0:参照物是文件开头位置
res=br.read()
print(res.decode("utf-8"))
#换行
#哈哈嘿嘿
with open(r'i.txt', mode='br') as br1:
br1.seek(6, 0)
br1.seek(8,0) #0:参照物是文件开头位置 "\n"占两个2bytes字节
print(br1.tell()) # 8
res = br1.read()
print(res.decode("utf-8"))
#读出来是空
#1模式在b模式下使用
with open(r'i.txt',mode='br') as br:
br.seek(6,1) #i.txt文本文件中是中文字符串,一个中文字符占3个bytes字节
print(br.tell()) #6 #1:参照物是当前指针所在位置
res=br.read()
print(res.decode("utf-8"))
#换行
#哈哈嘿嘿
#2模式在b模式下使用
with open(r'i.txt',mode='br') as br:
br.seek(-6,2) #i.txt文本文件中是中文字符串,一个中文字符占3个bytes字节
print(br.tell()) #13 #2:参照物是文件末尾位置,应该倒着移动
br.seek(-3, 2)
print(br.tell()) #16
res=br.read()
print(res.decode("utf-8"))
#嘿
 
 
 
 
 


 
posted @ 2020-08-31 16:10  梁博客  阅读(192)  评论(0)    收藏  举报