读取文件

news2024/11/15 11:51:19

自学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()方法并逐行输出动态信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1800679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫入门教程(二):requests库的高级用法

requests库除了基本的GET和POST请求外,requests库还提供了许多高级功能,本文将介绍其中一些常用的用法。包括: 会话保持(Session)SSL证书验证文件上传代理设置自定义HTTP适配器超时设置 请求参数 文章最开始&#x…

github将默认分支main改为master

github将默认分支main改为master 1.进入github,点击setting 2.在setting中,选择Respositories,更新默认分支为master 3.选择要更新的项目,在项目中选择setting->general->切换默认分支

Elastic Search(ES)Java 入门实操(3)数据同步

基本概念和数据查询代码: Elastic Search (ES)Java 入门实操(1)下载安装、概念-CSDN博客 Elastic Search(ES)Java 入门实操(2)搜索代码-CSDN博客 想要使用 ES 来查询数…

MAVEN:自定义模板Archetype的创建

目录 一、简介 二、具体步骤 三、 vscode通过模板创建项目 四、通过IDEA创建 一、简介 有时候MAVEN自带的模板库并不能满足我们创建项目的需求,为了能够快速创建项目,免去每次复杂的配置,所以我们需要自定义模板库,本次操作基于…

控制台输入javac命令输出的结果中的中文乱码解决方式

默认字符编码UTF-8无法解析中文。设置环境变量中 “JAVA_TOOL_OPTIONS” 的值为"UTF-8" 即可。 具体配置步骤: 桌面右键"我的电脑" --> 属性 高级系统设置 环境变量 用户变量中添加 JAVA_TOOL_OPTIONS 然后确定,保存即可。

Windows 更新根文件夹的修改时间

简介: Win10 系统不会根据深层目录文件更新主目录的修改时间. 一般解决办法是关闭 Winodws 搜索引擎。 win10文件夹不能自动更新了怎么办?_百度知道 本脚本通过递归遍历子目录和子文件,来更新根目录的时间。 使用内层目录和当前目录下的最新…

(杂交版)植物大战僵尸

1.为什么我老是闪退? 答:主页控制台把“后台运行”点开,尽量避免全屏就会好很多。 2.哪里下载? 答:夸克https://pan.quark.cn/s/973efb326f81 3.为啥我没有14个卡槽? 答:冒险没打,怪…

课时149:项目发布_基础知识_项目交付

1.1.1 项目交付 学习目标 这一节,我们从 基础知识、代码发布、小结 三个方面来学习 基础知识 简介 项目交付是一个涉及到多团队共同协作的事情,它包括 产品团队设计产品、研发团队开发产品、测试团队测试代码、运维团队发布代码和维护站点等工作。项…

运维 之 DNS域名解析

前言 我们每天打开的网站,他是如何来解析,并且我们怎么能得到网站的内容反馈的界面呢?那什么是DNS呢(DNS(DomainNameservice,域名服务,主要用于因特网上作为域名和IP地址相互映射)那…

【Python】读取文件夹中所有excel文件拼接成一个excel表格 的方法

我们平常会遇到下载了一些Excel文件放在一个文件夹下,而这些Excel文件的格式都一样,这时候需要批量这些文件合并成一个excel 文件里。 在Python中,我们可以使用pandas库来读取文件夹中的所有Excel文件,并将它们拼接成一个Excel表…

【UE5 刺客信条动态地面复刻】实现无界地面01:动态生成

2024.6.4更新 昨天半夜意识到生成Cube的方案不合适,又开始到处找动态地面的方法,发现了我想要的效果直接可以用nigara实现!!!! 于是这个部分就暂时告一段落,今季开始新的方向的学习。 为了快速…

Flink⼤状态作业调优实践指南:状态报错与启停慢篇

摘要:本文整理自俞航翔、陈婧敏、黄鹏程老师所撰写的大状态作业调优实践指南。由于内容丰富,本文分享终篇状态报错与启停慢篇,主要分为以下四个部分: 检查点和快照超时的诊断与调优 作业快速启动和扩缩容方案 总结 阿里云企业级…

1.vue2.x-初识及环境搭建

目录 1.下载nodejs v16.x 2.设置淘宝镜像源 3.安装脚手架 4.创建一个项目 5.项目修改 代码地址:source-code: 源码笔记 1.下载nodejs v16.x 下载地址:Node.js — Download Node.js 2.设置淘宝镜像源 npm config set registry https://registry.…

如何删除电脑端口映射?

在使用电脑进行网络连接时,有时需要进行端口映射以实现不同设备之间的信息远程通信。当这些端口映射不再需要时,我们需要及时删除它们以确保网络的安全和稳定。本文将介绍如何删除电脑端口映射的方法。 操作系统自带的工具 大多数操作系统都提供了自带…

【docker】centos7配置docker镜像阿里云加速

国内从 DockerHub 拉取镜像有时会遇到困难,由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务。 测试了几次阿里云的加速是最快的。 …

OpenCV学习(4.6) 图像梯度

1.目标 在本教程中: 你会学到如何找到图像的梯度,边缘等。你会学到如下函数:**cv.Sobel(),cv.Scharr(),cv.Laplacian()** 等。 图像梯度是图像处理中的一个基本概念,它用于测量图像亮度变化的强度和方向…

springCloud中将redis共用到common模块

一、 springCloud作为公共模块搭建框架 springCloud 微服务模块中将redis作为公共模块进行的搭建结构图&#xff0c;如下&#xff1a; 二、redis 公共模块的搭建框架 如上架构&#xff0c;代码如下pom.xml 关键代码&#xff1a; <dependencies><!-- SpringBoot Boo…

【JMeter接口测试工具】第二节.JMeter基本功能介绍(中)【入门篇】

文章目录 前言四、信息头管理器五、Jmeter参数化 5.1 用户自定义的变量 5.2 csv批量添加 5.3 用户参数 5.4 随机数函数 5.5 计数器函数 5.6 时间函数六、Jmeter断言 6.0 断言介绍 6.1 响应断言 6.2 大小断言 6.3 持续时间断…

AI炒股:用Kimi获取美股的历史成交价格并画出股价走势图

在Kimi中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个编写Python脚本的任务&#xff0c;具体步骤如下&#xff1a; 用akshare库获取谷歌(股票代码&#xff1a;105.GOOG)、亚马逊(股票代码&#xff1a;105.AMZN )、苹果(股票代码&#xff1a;105.AAP…

内存经验分享

目录 内存统计工具 /proc/meminfo Buddy ​​​​​​​​​​​​​​Slub ​​​​​​​Procrank /proc/pid/smaps ​​​​​​​Dumpsys meminfo 内存评估 内存泄漏 Lmk 水位调整 内存统计工具 /proc/meminfo 可以提供整体内存信息&#xff0c;各字段表示的意思如…