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库的隐式引用...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
