tell()
文件定位,指的是当前文件指针读取到的位置,光标位置。在读写文件的过程中,如果想知道当前的位置,可以使用tell( )来获取。
tell( ):查看读取的位置在哪里. //返回指针当前所在的位置
with open('Test.txt','r') as f:
print(f.read(4))
print(f.tell())
print(f.read(5))
print(f.tell())
#对于中文来讲,每次读取到的一个汉字实际上占用了三个字节
#换行符\n占用了两个字节
测试文本 ' Test.txt ' 如下所示:
运行结果:
换行符\n占了两个字节的长度
truncate:可以对源文件进行截取操作
fobj_Before = open('Test.txt','r')
print(fobj_Before.read())
fobj_Before.close()
print('截取之后的数据......')
fobj_After=open('Test.txt','r+')
fobj_After.truncate(15)
print(fobj_After.read())
fobj_After.close()
在操作文件的过程中,需要定位到其他位置进行操作,可以用seek( )
seek(offset,from)有两个参数 offset:偏移量单位字节,负数是往回偏移,正数是往前偏移
0表示文件开头,1表示当前位置,2表示文件末尾
用'r'这种模式打开文件,在文本文件中,没有使用二进制的选项打开文件,只允许从文件的开头计算位置,
从文件尾部计算或者其他位置计算就会发生异常
with open('Test.txt','rb') as f:
data=f.read(2)
print(data.decode(encoding='utf-8'))
f.seek(-2,1) # 相当于光标回到了0的位置
print(f.read(4).decode('utf-8'))
f.seek(-6,2) # 光标放到末尾,向左移动6个字符
print(f.read(2).decode('utf-8'))
print(f.read(4).decode('utf-8'))
f.seek(4,0) #光标从最初始位置移动, 往右边移动4个字符
print(f.read(6).decode(encoding='utf-8'))