当前位置: 首页 > news >正文

读取文件

自学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)方法不同。

场景模拟:在蚂蚁庄园的动态栏目中记录着庄园里的新鲜事。现在想显示庄园里的动态信息。

图标 (35)

  实例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+(读写)。

场景模拟:在蚂蚁庄园的动态栏目中记录着庄园里的新鲜事。现在想显示蚂蚁庄园里的动态信息。

图标 (35)

  实例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日&#xff0c;360AI新品发布会暨开发者沟通会在京举办&#xff0c;360集团发布全新360AI搜索、360AI浏览器&#xff0c;360集团创始人周鸿祎在现场使用360AI搜索为2024年高考语文作文押题。同时&#xff0c;“360AI甄选”平台及会员体系“360AI大会员”正式上线&#xff0…...

Meta Llama 3 RMSNorm(Root Mean Square Layer Normalization)

Meta Llama 3 RMSNorm&#xff08;Root Mean Square Layer Normalization&#xff09; flyfish 目录 Meta Llama 3 RMSNorm&#xff08;Root Mean Square Layer Normalization&#xff09;先看LayerNorm和BatchNorm举个例子计算 LayerNormRMSNorm 的整个计算过程实际代码实现结…...

MySQL-6、单表访问方法

前言 前面介绍了MySQL表空间相关的内容。包括区、段、碎片区&#xff0c;还有一些不同的页类型的作用。 &#xff08;如果没有看前面五篇文章&#xff0c;不建议看此篇文章&#xff09; 传送门&#xff1a; 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文件&#xff0c;可以通过右键项目-资源-常规-添加创建或打开程序集资源 2.添加国际化字符串 打开Resources.resx文件&#xff0c;添加需要翻译的文本字符&#xff0c;并将访问修…...

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、先求出以矩阵中的每个单元格为起点的最长递增路径 题目中说&#xff0c;对于每个单元格&#xff0c;你可以往上&#xff0c;下&#xff0c;左&#xff0c;右四个方向移动。那么以一个单元格为起点的最长递增路径就是&#xff1a;从该单元格往上…...

语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(二)音频数据预处理及去噪算法+Python源码应用

前言 深度学习技术在当今技术市场上面尚有余力和开发空间的&#xff0c;主流落地领域主要有&#xff1a;视觉&#xff0c;听觉&#xff0c;AIGC这三大板块。 目前视觉板块的框架和主流技术在我上一篇基于Yolov7-LPRNet的动态车牌目标识别算法模型已有较为详细的解说。与AIGC相…...

网络原理——http/https ---http(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 网络原理 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

理论 摘自&#xff1a;USB 主机和配件概览 | Connectivity | Android Developers (google.cn) Android 通过 USB 配件和 USB 主机两种模式支持各种 USB 外围设备和 Android USB 配件&#xff08;实现 Android 配件协议的硬件&#xff09;。 在 USB 主机模式下&#xff0…...

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(…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...