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

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...