seek( ) 和 tell( )|学习笔记

简介: 快速学习 seek( ) 和 tell( )

开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理seek( ) 和 tell( )】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/601/detail/8773


seek( ) 和 tell( )


内容介绍:


一、二进制读文件

二、tell( )

三、seek( )

 

一、二进制读文件

demo.txt  中继续写为  Lorem 的内容,之前以文本形式读取,现在想要以二进制形式去读取

输入

with open('demo.txt' , 'rb') as file_obj:

print(file_obj.read( ) )

形式与之前文本去读的内容大致无区别,但是前面多了 b ,这表示现在的字符串是一个二进制字符串

输入:print(file_obj.read( 100 ) )

 

读取 100 个字符,但读的是二进制,所以实际上是 100 个字节,但是像英文,一个字符就是一个字节,所以似乎没有什么区别

 

二、tell( )

#tell ( )  方法用来查看当前读取的位置

print('当前读取到了-->' , file_obj.tell( ) )

print(file_obj.read( 100 ) )

print(file_obj.read( 30 ) )就是读取到130

 

三、seek( )

#seek( ) 可以修改当前读取的位置

file_obj.seek( )

先注释掉已读的:

with open('demo.txt' , 'rb') as file_obj:

#print(file_obj.read( 100 ) )

#print(file_obj.read( 30 ) )

#file_obj.seek( )

print('当前读取到了-->' , file_obj.tell( ) )

 

然后 file_obj.seek( 55 )

先执行:

这时再从 55 个开始读

print(file_obj.read(5))

可以连续改变,先不读,先看位置:

with open('demo.txt' , 'rb') as file_obj:

#print(file_obj.read( 100 ) )

#print(file_obj.read( 30 ) )

file_obj.seek( 55 )

file_obj.seek( 80 )

#print(file_obj.read(5))

print('当前读取到了-->' , file_obj.tell( ) )

 

可以看到改变了位置

注意:seek( ) 需要两个参数

第一个 是要切换到的位置

第二个 计算位置方式

可选值:

0 从头计算

1 从当前位置计算

2 从最后位置开始计算

比如 file_obj.seek( 80 ) 改为 file_obj.seek( 80,0 ), 还是 80

file_obj.seek( 55 )

file_obj.seek( 80,0 )

file_obj.seek( 70,1 )

表示从 80 开始,往后读 70 个,是 150

file_obj.seek( 55 )

file_obj.seek( 80,0 )

file_obj.seek( 70,1 )

file_obj.seek( 1,2 )

表示从最后位置开始往后走一个

那么能不能从 452 开始往后读内容呢?

print(file_obj.read( ))

没有内容,因为文本长度一共为 451,所以读不出来

改为 file_obj.seek( -1,2 ),表示从后计算减一个,读出来就是最后一个.

 

file_obj.seek( -10,2 ),就是最后十个

 

此外,seek( ) 也可以对文本文件使用,但是要注意文本字符到底占几个字节,并相应做一些判断

相关文章
|
6月前
|
存储
fread和fwirte函数
fread和fwirte函数
44 0
|
3月前
|
C++
C++通过文件指针获取文件大小
C++通过文件指针获取文件大小
31 0
|
6月前
|
Java
POJ-2752-Seek the Name, Seek the Fame
POJ-2752-Seek the Name, Seek the Fame
26 0
|
5月前
|
C语言
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
C语言进阶——sprintf与sscanf、文件的随机读写(fseek、ftell、rewind)
43 0
|
6月前
|
C语言
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
文件操作(二、scanf/fscanf/sscanf​与printf/fprintf/sprintf​、fseek与ftell与rewind、feof)
av_seek_frame实战--跳转到文件指定时间后开始推流或写入新文件
av_seek_frame实战--跳转到文件指定时间后开始推流或写入新文件
138 0
av_seek_frame实战--跳转到文件指定时间后开始推流或写入新文件
|
机器学习/深度学习 C语言
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
506 0
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
文件操作以及相关的函数fwrite,fread,fseek,ftell,rwind,feof
🐰文件操作 🌸 fwrite 🌸fread 🌸fseek 🌸fteel 🌸rwind 🌸文本文件和二进制文件 🌸文件结束的判定 🌸文件缓冲区 🌸 实现拷贝一个文件
|
网络协议 测试技术 Go
带缓冲的 Reader 读文件 | 学习笔记
快速学习带缓冲的 Reader 读文件
带缓冲的 Reader 读文件 | 学习笔记