81. read readline readlines 读取文件的三种方法
81. read readline readlines 读取文件的三种方法
文章目录
- 81. read readline readlines 读取文件的三种方法
- 1. 读取文件的三种方法
- 2. read方法
- 3. readline方法
- 4. readlines方法
- 5. 代码总结
- 5.1 read方法读取全部内容
- 5.2 readline方法读取一行,返回字符串
- 5.3 readlines方法读取一行,返回列表
1. 读取文件的三种方法
read[riːd]:读取。
line [laɪn]:线、行。
【备注】
上述图片来自【大熊课堂】,本文内容参考【大熊课堂】的读取文件的三种操作方法
。
2. read方法
【功能】
读取文件的全部内容。
【返回值】
返回的数据类型为字符串。
【准备工作】
-
新建一个名为
81
的文件夹。 -
在
81
文件夹中新建一个八字文案.txt
文件。
在81.txt文件中写入如下内容:
马行千里
不洗沙尘
十年饮冰
难凉热血
-
在
81
文件夹中新建一个81.py
文件。 -
用VScode编辑器打开
81.py
文件,在该文件中编写代码。
【文件相关知识回顾】
文件的操作通常分为3个步骤:
-
打开文件
-
操作文件
-
关闭文件
重点注意用Python操作文件后注意要记得关闭文件夹。
【体验代码:读取文本的全部内容】
# open函数打开文件
f = open("八字文案.txt","r", encoding='utf-8')# read方法读取文件
c = f.read()
print(c)# close函数关闭文件
f.close()
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
运行上面的代码,我们读取了八字文案.txt
文件中的内容。
【open函数语法回顾】
open(file, mode='r', encoding='None', errors='None')
-
参数file表示要打开文件的路径。
-
参数 encoding 表示文件的编码方式,文件编码方式一般为 ‘utf-8’。
-
errors 参数表示读写文件时碰到错误的报错级别。
-
参数mode决定了打开文件的模式。
这里的r
表示以只读模式打开文件。
【mode参数说明】
-
运行open函数返回的是一个文件对象。
-
open 语句需要使用close关闭文件。
-
with open 语句不需要使用close关闭文件。
【上面的代码可以优化如下】
# with open 语句打开文件
with open("八字文案.txt","r", encoding='utf-8') as f:# 读取文件print(f.read())
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
【相关知识可参考以下链接】
69. open函数—打开文件并返回文件对象
70. with open( ) as 以自动关闭文件的方式打开文件
【体验代码:read读取部分内容】
当read方法的括号为空时,我们输出了txt文件的全部内容。
下面我们给read方法的括号中添加一个数值。
【read(1)】
with open("八字文案.txt","r", encoding='utf-8') as f:# 读取文件print(f.read(1))
【终端输出】
马
当添加数值1时,程序读取了txt文档的中的第一字符。
运行结果输出了第一个字符马
。
【read(4)】
with open("八字文案.txt","r", encoding='utf-8') as f:# 读取文件print(f.read(4))
【终端输出】
马行千里
当添加数值4时,程序读取了txt文档的中的前4个字符。
运行结果输出了文档的前4个字符马行千里
。
【read(5)】
with open("八字文案.txt","r", encoding='utf-8') as f:# 读取文件print(f.read(5))
【终端输出】
马行千里
当添加数值5时,程序读取了txt文档的中的前5个字符。
但运行结果还是输出了文档的前4个字符马行千里
。
输入4
和输入5
的终端输出结果肉眼看是一样的,但其本质是不一样的。
输入4
的时候,终端输出只有文本内容。
输入5
的时候,终端输出除了文本内容,还有一个换行效果。
这是因为我在编写八字文案.txt
文档时,在马行千里
后面敲了一个回车。
由了回车我们肉眼看到的是换行效果。
而程序把这个换行效果识别成换行符\n
。
这个\n
也是一个字符。
因此当程序运行到该字符时,才会输出一个换行效果。
【read(12)】
with open("八字文案.txt","r", encoding='utf-8') as f:# 读取文件print(f.read(12))
【终端输出】
马行千里
不洗沙尘
十年
3. readline方法
line[laɪn]:线,行。
line是行的意思。
【功能】
读取一行。
【返回值】
返回的数据类型是字符串。
【体验代码】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')# 读取文件
c = f.readline()
print(c) # 关闭文件
f.close()
【终端输出】
马行千里
运行上面的代码,程序输出了文档中第一行的内容。
【输出多行】
如果我们需要输出多行,就多次添加readline语句即可。
【输出2行】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readline()
print(c)
c = f.readline()
print(c)
# 关闭文件
f.close()
【终端输出】
马行千里不洗沙尘
【输出7行】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readline()
print(c)
c = f.readline()
print(c)
c = f.readline()
print(c)
c = f.readline()
print(c)
c = f.readline()
print(c)
c = f.readline()
print(c)
c = f.readline()
print(c)
# 关闭文件
f.close()
【终端输出】
马行千里不洗沙尘十年饮冰难凉热血
文档内容只有4行,当我写了7个readline语句后,后3个语句因此没有输出内容,程序会识别输出空行。
当我们在读取一个文件的时候,如果文件内容很多,这样一行一行的输出较为麻烦。
我们可以使用while循环来依次读取每行内容。
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')# 读取文件
c = f.readline()
while c !="":print(c)c = f.readline()
# 关闭文件
f.close()
【终端输出】
马行千里不洗沙尘十年饮冰难凉热血
【代码解析】
while c !="":print(c)c = f.readline()
while c !=""
c是读取到的每行文件内容。
内容的类型为字符串。
当变量c的值不等于0的时候,输出c变量,即输出该行的字符串内容。
print(c)
c = f.readline()
然后继续读取下一行内容。
当变量c的值等于0的时候,while循环终止,程序继续往下走。
【消除换行符】
观察输出结果,发现每行输出后都有一行空行,很不美观。
这个换行是print函数的end参数控制的。
完整的代码应该是下面这样:
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readline()
while c !="":print(c,end="\n")c = f.readline()
# 关闭文件
f.close()
end="\n"
print函数是有很多个参数的,且它的end参数默认值为end="\n"
。
因此,当我们不介意有换行的时候,通常不会修改这个参数,也不会写出这个参数,都是使用默认值。
那如果我们不需要欢喜,我们只需修改end参数的值即可。
这里我把end
参数的值修改成一个空字符,输出的结果就没有换行效果了。
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readline()
while c !="":print(c,end="")c = f.readline()
# 关闭文件
f.close()
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
【空字符效果】
end=""
【总结】
如果你想要换行效果,不用设置print函数的end参数。
如果你不想要换行效果,将print函数的end
参数修改为end=""
即可。
4. readlines方法
【功能】
读取一行。
【返回值】
返回的是一个字符串的列表。
【体验代码】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readlines()
print(c)
print(type(c))
# 关闭文件
f.close()
【终端输出】
['马行千里\n', '不洗沙尘\n', '十年饮冰\n', '难凉热血 ']
<class 'list'>
【readline和readlines的异同】
相同点每次都读取一行。
区别就是一个返回的是字符串类型,一个返回的是列表类型。
readlines会把读取到的每一行都当做一个列表的元素,添加到列表中。
【for循环提取列表中的元素】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readlines()
for i in c:print(i,end="") # end=""消除换行效果
# 关闭文件
f.close()
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
5. 代码总结
5.1 read方法读取全部内容
【open语句】
# open函数打开文件
f = open("八字文案.txt","r", encoding='utf-8')# read方法读取文件
c = f.read()
print(c)# close函数关闭文件
f.close()
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
【with open语句】
# with open 语句打开文件
with open("八字文案.txt","r", encoding='utf-8') as f:# 读取文件print(f.read())
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
5.2 readline方法读取一行,返回字符串
【读取一行】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readline()
print(c)
# 关闭文件
f.close()
【终端输出】
马行千里
【while循环读取全部内容】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')# 读取文件
c = f.readline()
while c !="":print(c,end="")c = f.readline()
# 关闭文件
f.close()
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
5.3 readlines方法读取一行,返回列表
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readlines()
print(c)
print(type(c))
# 关闭文件
f.close()
【终端输出】
['马行千里\n', '不洗沙尘\n', '十年饮冰\n', '难凉热血 ']
<class 'list'>
【for循环提取列表中的元素】
# 打开文件
f = open("八字文案.txt","r", encoding='utf-8')
# 读取文件
c = f.readlines()
for i in c:print(i,end="") # end=""消除换行效果
# 关闭文件
f.close()
【终端输出】
马行千里
不洗沙尘
十年饮冰
难凉热血
相关文章:

81. read readline readlines 读取文件的三种方法
81. read readline readlines 读取文件的三种方法 文章目录 81. read readline readlines 读取文件的三种方法1. 读取文件的三种方法2. read方法3. readline方法4. readlines方法5. 代码总结5.1 read方法读取全部内容5.2 readline方法读取一行,返回字符串5.3 readli…...

【社区图书馆】【图书活动第四期】
目录 一、前言 二、作者简介 三、《PyTorch高级机器学习实战》内容简介 四、书目录 一、前言 今天,偶尔逛到csdn社区图书馆,看到有活动 “【图书活动第四期】来一起写书评领实体奖牌红包电子勋章吧!”(活动到今天结束…...
webpack学习指南(上)
构建流程 Webpack 的构建流程可以分为以下几个步骤: 解析配置文件:Webpack 会读取项目中的 webpack.config.js 文件,并解析其中的配置项。 解析入口文件:Webpack 通过配置文件中设置的 entry 入口,递归地解析出所有依…...

刷题记录˃ʍ˂
一、1033. 移动石子直到连续 思路 这道题是一道数学题,它一共分为三种可能 第一种可能为三个石子本来就是连续的时候 第二种可能为最少步数为1的时候,相邻石子不能大于一格 第三种可能为最少步数为2的时候,这时相邻石子大于一格 那么第二…...

Word2vec原理+实战学习笔记(二)
来源:投稿 作者:阿克西 编辑:学姐 前篇:Word2vec原理实战学习笔记(一) 视频链接:https://ai.deepshare.net/detail/p_5ee62f90022ee_zFpnlHXA/6 5 对比模型(论文Model Architectur…...
什么是Java的多线程?
Java的多线程是指在同一时间内,一个程序中同时运行多个线程。每个线程都是一个独立的执行路径,可以独立地执行代码。Java中的多线程机制使得程序可以更高效地利用计算机的多核处理器和CPU时间,从而提高程序的性能和响应能力。 创建和使用Jav…...
“use strict“是什么? 使用它有什么优缺点?
严格模式 - JavaScript | MDN Javascript 严格模式详解 - 阮一峰的网络日志 1、"use strict" 是什么? "use strict" :指定代码在严格条件下执行; 2、 使用 "use strict" 有什么优缺点? ① 严格模式通过抛出错…...

【C++】C++11常用特性总结
哥们哥们,把书读烂,困在爱里是笨蛋! 文章目录 一、统一的列表初始化1.统一的{}初始化2.std::initializer_list类型的初始化 二、简化声明的关键字1.decltype2.auto && nullptr 三、STL中的一些变化1.新增容器:array &…...

泛型——List 优于数组
数组与泛型有很大的不同: 1. 数组是协变的(covariant) 意思是:如果Sub是Super的子类型,则数组类型Sub[] 是数组类型Super[] 的子类型。 2. 泛型是不变的(invariant) 对于任何两种不同的类型Ty…...
JavaScript中对象的定义、引用和复制
JavaScript是一种广泛使用的脚本语言,其设计理念是面向对象的范式。在JavaScript中,对象就是一系列属性的集合,每个属性包含一个名称和一个值。属性的值可以是基本数据类型、对象类型或函数类型,这些类型的值相互之间有着不同的特…...

JavaScript通过函数异常处理来输入圆的半径,输出圆的面积的代码
以下为实现通过函数异常处理来输入圆的半径,输出圆的面积的代码和运行截图 目录 前言 一、通过函数异常处理来输入圆的半径,输出圆的面积 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以…...

Ubuntu 安装 Mysql
主要内容 本文主要是实现在虚拟机 Ubuntu 18.04 成功安装 MySQL 5.7,并实现远程访问功能,以 windows 下客户端访问虚拟机上的 mysql 数据库。 1. 切换至 root 用户 ,shell 终端指令均执行在 root 用户下 sudo su 2. 安装并设置 mysql 安…...

【五一创作】【Midjourney】Midjourney 连续性人物创作 ② ( 获取大图和 Seed 随机种子 | 通过 seed 随机种子生成类似图像 )
文章目录 一、获取大图和 Seed 随机种子二、通过 seed 种子生成类似图像 一、获取大图和 Seed 随机种子 注意 : 一定是使用 U 按钮 , 在生成的大图的基础上 , 添加 信封 表情 , 才能获取该大图的 Seed 种子编码 ; 在上一篇博客生成图像的基础上 , 点击 U3 获取第三张图的大图 ;…...

分布式事务 --- Seata事务模式、高可用
一、事务模式 1.1、XA模式 XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。…...

SQL(基础)
DDL: 数据定义语言 Definition,用来定义数据库对象(数据库、表、字段)CREATE、DROP、ALTER DML: 数据操作语言 Manipulation,用来对数据库表中的数据进行增删改 INSERT、UPDATE、DELETE 注意: DDL是改变表的结构 DML…...

「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验
「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验 一、前言1.1 本次实践介绍1.2 本次实践目的 二、准备环境资源2.1 部署前需准备工作2.2 本地环境规划 三、部署Docker环境3.1 安装Docker3.2 配置Docker镜像加速3.3 开启路由转发3.4 重启Docker服务 四、检查本地Doc…...

计算机操作系统实验:银行家算法模拟
目录 前言实验目的实验内容实验原理实验过程代码如下代码详解算法过程运行结果 总结 前言 本文是计算机操作系统实验的一部分,主要介绍了银行家算法的原理和实现。银行家算法是一种用于解决多个进程对多种资源的竞争和分配的算法,它可以避免死锁和资源浪…...

机器学习:多项式拟合分析中国温度变化与温室气体排放量的时序数据
文章目录 1、前言2、定义及公式3、案例代码1、数据解析2、绘制散点图3、多项式回归、拟合4、注意事项 1、前言 当分析数据时,如果我们找的不是直线或者超平面,而是一条曲线,那么就可以用多项式回归来分析和预测。 2、定义及公式 多项…...

一个 24 通道 100Msps 逻辑分析仪
这是一个创建非常便宜的逻辑分析仪的项目,但其功能可与昂贵的商业分析仪相媲美。该分析仪可以以每秒 1 亿个样本的最高速度对多达 24 个通道进行采样,并且可以通过单个通道中的极性变化或多达 16 个通道形成的模式来触发。 该项目不仅包含硬件࿰…...
使用Process Explorer和Dependency Walker排查C++程序中dll库动态加载失败问题
目录 1、exe主程序启动时的库加载流程说明 2、加载dll库两种方式 2.1、dll库的隐式引用...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...