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( ) 也可以对文本文件使用,但是要注意文本字符到底占几个字节,并相应做一些判断

相关文章
带你读《5G NR标准:下一代无线通信技术》之一:5G概述
本书对NR标准进行了描述。NR标准是在2018年春末由3GPP制定的新一代无线接入技术标准。本书内容比较偏底层,阅读时结合协议去读会有更大的收获,而且全书深入浅出的风格非常好,可以使读者读后知其然又知其所以然!
|
5月前
|
数据采集 JSON 数据安全/隐私保护
小红书评论采集工具,小红书自动采集软件,Uid作品笔记用户提取
这个工具包含三个主要功能:1) 获取用户基本信息 2) 获取用户发布的笔记 3) 获取笔记下的评论
|
5月前
|
人工智能 自然语言处理 网络安全
云上玩转Qwen3系列之四:构建AI Search RAG全栈应用
本文介绍如何利用人工智能平台 PAI-LangStudio、Qwen3 大模型与 AI 搜索开放平台结合 Elasticsearch,构建高效、精准的 AI Search RAG 智能检索应用。通过混合检索技术及 Agentic Workflow 编排,实现自然语言驱动的精准查询,并支持灵活扩展与二次开发,满足多样化场景需求。
230 0
|
Linux Shell KVM
Kali系统基于qemu虚拟化运行img镜像文件
QEMU是一个由Fabrice Bellard创建的开源虚拟化器,能在多种平台上运行,如x86、ARM、PowerPC。它支持硬件仿真和虚拟化,允许在宿主系统上运行不同架构和OS,如Windows、Linux。QEMU特点包括硬件仿真、虚拟化支持(与KVM配合)、磁盘和网络仿真、快照及回滚功能。此外,文档还展示了在Kali Linux中安装和配置QEMU的步骤,包括下载、内存设置、源更新、软件安装、创建桥接脚本以及启动和管理虚拟机。
987 1
Kali系统基于qemu虚拟化运行img镜像文件
|
存储 安全 前端开发
SAAS解决方案深度剖析:适用场景、挑战与成本评估指南
SAAS解决方案深度剖析:适用场景、挑战与成本评估指南
643 0
|
算法 物联网 测试技术
开发一个arm固件加载基址定位器
最近入坑iot,涉及很多芯片固件的逆向。但是这些固件很多时候都不是标准二进制格式,也就是说丢进ida,识别不出架构和指令集。架构和指令集可以查芯片的文档,但是加载基址还没法确定,这个靠自己去定位,再配置ida。人工做这个工作太累,而我又是懒狗,所以自动化这一过程不香吗?
|
存储 网络协议 数据安全/隐私保护
西门子S7comm流量与Snap7 ClientDemo操作过程分析(上)
西门子S7comm流量与Snap7 ClientDemo操作过程分析
1081 0
|
存储 SQL 缓存
【Paper Reading】DEPART:分布式KV存储系统的副本解耦方案
基于LSM-tree的键值存储系统是 NewSQL/NoSQL产品中最常用的底层存储方案,对其进行研究具有重要意义与应用价值。论文针对 分布式键值系统首次提出了副本解耦的思想,在多副本容错机制下能够实现副本数据的高效管理,从而显著提升系统性能。并且论文提出的技术可以应用到Cassandra、TiKV、ScyllaDB等系统中。本次分享将和大家一起讨论基于副本解耦的分布式键值系统的设计实现方案,并探讨未来的推广应用。
25909 1
【Paper Reading】DEPART:分布式KV存储系统的副本解耦方案
|
NoSQL 关系型数据库 MySQL
CTFShow-SSRF(writeup)
CTFShow-SSRF(writeup)
460 0
CTFShow-SSRF(writeup)