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库的隐式引用...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...