读取文件
自学python如何成为大佬(目录):自学python如何成为大佬(目录)_利用python语言智能手机的默认语言实战一-CSDN博客
在Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容。读取文件内容主要分为以下几种情况:
1 读取指定字符
文件对象提供了read()方法读取指定个数的字符,语法格式如下:
file.read([size])
参数说明:
l file:为打开的文件对象。
l size:可选参数,用于指定要读取的字符个数,如果省略,则一次性读取所有内容。
注意:在调用read()方法读取文件内容的前提是在打开文件时,指定的打开模式为r(只读)或者r+(读写),否则,将抛出如图11所示的异常。
图11 没有读取权限时抛出的异常
例如,要读取message.txt文件中的前9个字符,可以使用下面的代码:
with open('message.txt','r') as file: # 打开文件
string = file.read(9) # 读取前9个字符
print(string)
如果message.txt的文件内容为:
你使用了1张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。
那么执行上面的代码将显示以下结果:
你使用了1张加速卡
使用read(size)方法读取文件时,是从文件的开头读取的。如果想要读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到新的位置,然后再应用read(size)方法读取。seek()方法的基本语法格式如下:
file.seek(offset[,whence])
参数说明:
l file:表示已经打开的文件对象。
l offset:用于指定移动的字符个数,其具体位置与whence参数有关。
l whence:用于指定从什么位置开始计算。值为0表示从文件头开始计算,值为1表示从当前位置开始计算,值为2表示从文件尾开始计算,默认为0。
注意:对于whence参数,如果在打开文件时,没有使用b模式(即rb),那么只允许从文件头开始计算相对位置,从文件尾计算时就会抛出如图12所示的异常。
图12 抛出io.UnsupportedOperation异常
例如,想要从文件的第19个字符开始读取13个字符可以使用下面的代码:
with open('message.txt','r') as file: # 打开文件
file.seek(19) # 移动文件指针到新的位置
string = file.read(13) # 读取13个字符
print(string)
如果采用GBK编码的message.txt文件内容为:
你使用了1张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。
那么执行上面的代码将显示以下结果:
小鸡撸起袖子开始双手吃饲料
说明:在使用seek()方法时,如果采用GBK编码,那么offset的值是按一个汉字(包括中文标点符号)占两个字符计算,而采用UTF-8编码,则一个汉字占3个字符,不过无论采用何种编码英文和数字都是按一个字符计算的。这与read(size)方法不同。
场景模拟:在蚂蚁庄园的动态栏目中记录着庄园里的新鲜事。现在想显示庄园里的动态信息。
实例03 显示蚂蚁庄园的动态
在IDLE中创建一个名称为antmanor_message_r.py的文件,然后在该文件中,首先应用open()函数以只读方式打开一个文件,然后再调用read()方法读取全部动态信息,并输出,代码如下:
print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
message = file.read() # 读取全部动态信息
print(message) # 输出动态信息
print("\n","="*29,"over","="*29,"\n")
执行上面的代码,将显示如图13所示的结果。
图13 显示蚂蚁庄园的全部动态
2 读取一行
在使用read()方法读取文件时,如果文件很大,一次读取全部内容到内存,容易造成内存不足,所以通常会采用逐行读取。文件对象提供了readline()方法用于每次读取一行数据。readline()方法的基本语法格式如下:
file.readline()
其中,file为打开的文件对象。同read()方法一样,打开文件时,也需要指定打开模式为r(只读)或者r+(读写)。
场景模拟:在蚂蚁庄园的动态栏目中记录着庄园里的新鲜事。现在想显示蚂蚁庄园里的动态信息。
实例04 逐行显示蚂蚁庄园的动态
在IDLE中创建一个名称为antmanor_message_rl.py的文件,然后在该文件中,首先应用open()函数以只读方式打开一个文件,然后应用while语句创建循环,在该循环中调用readline()方法读取一条动态信息并输出,另外还需要判断内容是否已经读取完毕,如果读取完毕应用break语句跳出循环,代码如下:
print("\n","="*35,"蚂蚁庄园动态","="*35,"\n")
with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
number = 0 # 记录行号
while True:
number += 1
line = file.readline()
if line =='':
break # 跳出循环
print(number,line,end= "\n") # 输出一行内容
print("\n","="*39,"over","="*39,"\n")
执行上面的代码,将显示如图14所示的结果。
图14 逐行显示蚂蚁庄园的全部动态
3 读取全部行
读取全部行的作用同调用read()方法时不指定size类似,只不过读取全部行时,返回的是一个字符串列表,每个元素为文件的一行内容。读取全部行,使用的是文件对象的readlines()方法,其语法格式如下:
file.readlines()
其中,file为打开的文件对象。同read()方法一样,打开文件时,也需要指定打开模式为r(只读)或者r+(读写)。
例如,通过readlines()方法读取实例03中的message.txt文件,并输出读取结果,代码如下:
print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
message = file.readlines() # 读取全部动态信息
print(message) # 输出动态信息
print("\n","="*29,"over","="*29,"\n")
执行上面的代码,将显示如图15所示的运行结果。
图15 readlines()方法的返回结果
从该运行结果中可以看出readlines()方法的返回值为一个字符串列表。在这个字符串列表中,每个元素记录一行内容。如果文件比较大时,采用这种方法输出读取的文件内容会很慢。这时可以将列表的内容逐行输出。例如,下面的代码可以修改为以下内容。
print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
with open('message.txt','r') as file: # 打开保存蚂蚁庄园动态信息的文件
messageall = file.readlines() # 读取全部动态信息
for message in messageall:
print(message) # 输出一条动态信息
print("\n","="*29,"over","="*29,"\n")
执行结果如图16所示。
图16 应用readlines()方法并逐行输出动态信息
相关文章:

读取文件
自学python如何成为大佬(目录):自学python如何成为大佬(目录)_利用python语言智能手机的默认语言实战一-CSDN博客 在Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容。读取文件内容主要分为以下几种情况: 1 读取指…...

Allure在jenkins中无法显示的问题
jenkins中使用allure生成报告需要注意工作环境和路径的配置 前提条件: jenkins容器中已安装jdk和allure jenkins中配置全局工具环境: 项目中配置allure路径: 路径来源: Path需要选择相对路径的allure-report、allure-results...

建筑建筑一建考试试题及答案,分享几个实用搜题和学习工具 #其他#职场发展
收录了大量考试类型的题库,大到考公,小到知识竞赛,题库资源算是比较丰富的了。操作起来也不难,我们只需输入题目内容,即可快速搜索出答案,而且它在给出答案的同时还会附带解析。最重要的是,搜题…...
[240607] Jina AI 发布多模态嵌入模型 | PHP 曝新漏洞 | TypeScript 5.5 RC 发布公告
目录 Jina AI 多模态嵌入模型 - jina-clip-v1PHP 漏洞 CVE-2024-4577TypeScript 5.5 RC 发布公告 Jina AI 多模态嵌入模型 - jina-clip-v1 jina-clip-v1 是 Jina AI 最新推出的多模态嵌入模型。与 OpenAI CLIP 相比,它大幅提升了纯文本检索方面的性能,同…...

LeetCode 算法:滑动窗口最大值c++
原题链接🔗:滑动窗口最大值 难度:困难⭐️⭐️⭐️ 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…...
荆州餐饮环保在行动:清洗油烟净化器,守护城市环境
我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 在荆州,餐饮业不仅是美食爱好者的天堂,更是城市生活的重要组成部分。然而,随着餐饮业的发…...

AIConnect赋能加持丨AI+DEPIN 共同推动AI发展的技术与运用峰会圆满落幕
6月6日,由AIConnect主办,JuCoin协办的「AIDePIN 共同推动AI发展的技术与应用」峰会在胡志明市圆满落幕!此次活动不仅是AIConnect生态在市场推广和技术应用方面的重要一步,也标志着JuCoin在推动AI与DePIN技术融合中的又一里程碑。 …...

【自定义View】Android圆饼进度条
源码 自定义属性 <?xml version"1.0" encoding"utf-8"?> <resources><declare-styleable name"ArcProgressView"><attr name"android:textSize" /><attr name"bgBorderWidth" format"d…...

AI重塑搜索和浏览器,360打造AIPC轻量化方案
6月6日,360AI新品发布会暨开发者沟通会在京举办,360集团发布全新360AI搜索、360AI浏览器,360集团创始人周鸿祎在现场使用360AI搜索为2024年高考语文作文押题。同时,“360AI甄选”平台及会员体系“360AI大会员”正式上线࿰…...

Meta Llama 3 RMSNorm(Root Mean Square Layer Normalization)
Meta Llama 3 RMSNorm(Root Mean Square Layer Normalization) flyfish 目录 Meta Llama 3 RMSNorm(Root Mean Square Layer Normalization)先看LayerNorm和BatchNorm举个例子计算 LayerNormRMSNorm 的整个计算过程实际代码实现结…...
MySQL-6、单表访问方法
前言 前面介绍了MySQL表空间相关的内容。包括区、段、碎片区,还有一些不同的页类型的作用。 (如果没有看前面五篇文章,不建议看此篇文章) 传送门: MySQL-1、InnoDB行格式 MySQL-2、InnoDB数据页 MySQL-3、索引 M…...
C语言实现三角波生成
C语言实现三角波生成 #include <stdio.h>#define SAMPLE_RATE 10000 // 采样率10kHz=10000Hz 对应100us=0.1ms #define UP_TIME 12.5 //上升时间12.5ms #...

WPF国际化的最佳实践
WPF国际化的最佳实践 1.创建项目资源文件 如果你的项目没有Properties文件夹和Resources.resx文件,可以通过右键项目-资源-常规-添加创建或打开程序集资源 2.添加国际化字符串 打开Resources.resx文件,添加需要翻译的文本字符,并将访问修…...

ctfshow web
【nl】难了 <?php show_source(__FILE__); error_reporting(0); if(strlen($_GET[1])<4){echo shell_exec($_GET[1]); } else{echo "hack!!!"; } ?> //by Firebasky //by Firebasky ?1>nl //先写个文件 ?1*>b //这样子会把所有文件名写在b里…...

【力扣】矩阵中的最长递增路径
一、题目描述 二、解题思路 1、先求出以矩阵中的每个单元格为起点的最长递增路径 题目中说,对于每个单元格,你可以往上,下,左,右四个方向移动。那么以一个单元格为起点的最长递增路径就是:从该单元格往上…...

语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(二)音频数据预处理及去噪算法+Python源码应用
前言 深度学习技术在当今技术市场上面尚有余力和开发空间的,主流落地领域主要有:视觉,听觉,AIGC这三大板块。 目前视觉板块的框架和主流技术在我上一篇基于Yolov7-LPRNet的动态车牌目标识别算法模型已有较为详细的解说。与AIGC相…...

网络原理——http/https ---http(1)
T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 网络原理 HTTP/HTTPS HTTP,全称为"超文本传输协议" HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议. 实际上,HTTP最新已经发展到 3.0 但是当前行业中主要使用的HT…...

Docker安装、使用,容器化部署springboot项目
目录 一、使用官方安装脚本自动安装 二、Docker离线安装 1. 下载安装包 2. 解压 3.创建docker.service文件 4. 启动docker 三、docker常用命令 1. docker常用命令 2. docker镜像命令 3. docker镜像下载 4.docker镜像push到仓库 5. docker操作容器 6.docker …...

USB主机模式——Android
理论 摘自:USB 主机和配件概览 | Connectivity | Android Developers (google.cn) Android 通过 USB 配件和 USB 主机两种模式支持各种 USB 外围设备和 Android USB 配件(实现 Android 配件协议的硬件)。 在 USB 主机模式下࿰…...
240520Scala笔记
240520Scala笔记 第 7 章 集合 7.1 集合1 数组Array 集合(Test01_ImmutableArray): package chapter07 object Test01_ImmutableArray {def main(args: Array[String]): Unit {// 1. 创建数组val arr: Array[Int] new Array[Int](5)// 另一种创建方式val arr2 Array(…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...