81. read readline readlines 读取文件的三种方法

news2024/12/23 10:19:47

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方法

【功能】

读取文件的全部内容。

【返回值】

返回的数据类型为字符串。

【准备工作】

  1. 新建一个名为81的文件夹。

  2. 81文件夹中新建一个八字文案.txt文件。

在81.txt文件中写入如下内容:

马行千里
不洗沙尘
十年饮冰
难凉热血

  1. 81文件夹中新建一个81.py文件。

  2. 用VScode编辑器打开81.py文件,在该文件中编写代码。

【文件相关知识回顾】

文件的操作通常分为3个步骤:

  1. 打开文件

  2. 操作文件

  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')
  1. 参数file表示要打开文件的路径

  2. 参数 encoding 表示文件的编码方式,文件编码方式一般为 ‘utf-8’。

  3. errors 参数表示读写文件时碰到错误的报错级别。

  4. 参数mode决定了打开文件的模式。

这里的r表示以只读模式打开文件。

【mode参数说明】

在这里插入图片描述

  1. 运行open函数返回的是一个文件对象

  2. open 语句需要使用close关闭文件。

  3. 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()

【终端输出】

马行千里
不洗沙尘
十年饮冰
难凉热血 

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

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

相关文章

stable diffusion的使用

文章目录 1 文生图1.1 mountains and trees and gree1.2 three dogs1.3 cats1.4 three lovely cats1.5 beautiful girl1.6 机器猫1.7 卡通图像生成 1 文生图 1.1 mountains and trees and gree 1.2 three dogs 1.3 cats 1.4 three lovely cats 1.5 beautiful girl stable diff…

CRN Camera Radar Net for Accurate, Robust, Efficient 3D Perception

这是发表在ICLR2023 workshop on Scene Representations for Autonomous Driving上的文章&#xff0c;目前在nuScenes的cameraRadar的3D目标检测赛道上刷到了第一&#xff0c;非常值得一看 一、创新点和贡献 采用了一种两阶段的融合思路&#xff1a; 采用radar-assistant-vie…

【AI工具】bing chat 使用--三种模式+撰写功能

bing chat:三种模式撰写功能 以下为点击复制后粘贴的内容 Bing Chat提供三种对话模式可选择&#xff1a;创造力、平衡和精确。更多创造力&#xff08;Creative&#xff09;&#xff1a;Bing Chat回答的内容将带有更多语气和情绪&#xff0c;更像一个真实的人类与用户对话。更多…

如何实现倾斜摄影三维模型数据裁剪和轻量化一体化处理?

如何实现倾斜摄影三维模型数据裁剪和轻量化一体化处理&#xff1f; 随着数字地球和数字城市的发展&#xff0c;倾斜摄影三维模型成为了重要的数据形式。然而&#xff0c;由于数据量大&#xff0c;处理难度大等问题&#xff0c;如何实现倾斜摄影三维模型数据裁剪和轻量化一体化处…

ChatGPT提示词工程(二):Iterative迭代

目录 一、说明二、安装环境三、Iterative第一次写Prompt第二次写Prompt第三次写Prompt第四次写Prompt第五次写Prompt 四、总结 一、说明 这是吴恩达 《ChatGPT Prompt Engineering for Developers》 的课程笔记系列。 本文是第三讲的内容&#xff1a;Iterative 课程主讲&#…

RabbitMQ 发布订阅模式,routing路由模式,topic模式

发布订阅模式 一个消息可以由多个消费者消费同一个消息 消费者1和2同时消费了该消息 举例 public static void main(String[] args) throws IOException, TimeoutException {//1 创建连接工厂ConnectionFactory connectionFactorynew ConnectionFactory();//2 设置rabbitmq …

机器学习与深度学习——通过knn算法分类鸢尾花数据集iris求出错误率并进行可视化

什么是knn算法&#xff1f; KNN算法是一种基于实例的机器学习算法&#xff0c;其全称为K-最近邻算法&#xff08;K-Nearest Neighbors Algorithm&#xff09;。它是一种简单但非常有效的分类和回归算法。 该算法的基本思想是&#xff1a;对于一个新的输入样本&#xff0c;通过…

Preftest测试

Preftest测试 Perftest 是一组基于uverbs编写的测试程序&#xff0c;是RDMA性能相关的micro-benchmark。可用于软硬件调优以及功能测试。 Perfest支持的测试 源码位置 linux-rdma/perftest: Infiniband Verbs Performance Tests (github.com) 安装 直接安装preftest sudo …

Flink作业任务的9种状态简单介绍

​ 当创建一个Flink任务后&#xff0c;该任务可能会经历多种状态。目前Flink给任务共定义了9种状态&#xff0c;包括&#xff1a;Created&#xff0c;Running&#xff0c;Finished&#xff0c;Cancelling&#xff0c;Canceled&#xff0c;Restarting&#xff0c;Failing&#x…

类加载器和双亲委派模型面试总结

类的生命周期和类加载的过程 在了解类加载器之前&#xff0c;我们先来了解一下一个类的生命周期和类加载的过程。 一个类完整的生命周期包括 加载、验证、准备、解析、初始化、使用和卸载&#xff0c;一共7个阶段。 类加载过程包括&#xff0c;加载、连接和初始化&#xff0…

腾讯云镜YunJing——Agent定时任务脚本分析

缘起 如果你有台腾讯云主机&#xff0c;会发现默认有个叫 YunJing 的进程。 把它kill掉后&#xff0c;发现一段时间又出现了 这是为什么捏&#xff1f; 分析定时任务配置文件 通过crontab定时任务目录, 会发现有个叫yunjing的配置文件。 */30 * * * * root /usr/local/qc…

PCIe物理层详细总结-PCIE专题知识(一)

目录 一、简介二、PCIe物理层结构及功能2.1 PCIe端对端连接方式2.2 PCIe组成2.2.1 逻辑层(Logic)1 发送逻辑2 接收逻辑 2.2.2 电气层(Electrical)1 物理层-电气(Physical Layer Electrical)2 数据传送----差分方式 2.2.3 PLP介绍 三、其他相关链接1、PCI总线及发展历程总结 一、…

ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(一)

作者&#xff1a;Jeff Vestal 结合 Elasticsearch 的搜索相关性和 OpenAI 的 ChatGPT 的问答功能来查询你的数据。 在此博客中&#xff0c;你将了解如何使用 Elasticsearch 将 ChatGPT 连接到专有数据存储&#xff0c;并为你的数据构建问答功能。 ChatGPT 和 Elasticsearch&…

【react从入门到精通】React JSX详解

文章目录 前言React技能树什么是JSXJSX的基本语法规则1.JSX必须有一个顶层元素2.JSX标签必须有一个结束标记&#xff0c;或者是自闭合的3.JSX中可以使用JavaScript表达式4.JSX中的样式和HTML中的样式有所不同5.JSX中的class属性必须写成className6.JSX中的style属性必须使用对象…

JavaWeb-HTML常用标签了解(一)

这里写目录标题 注释标签标题标签段落标签换行标签格式化标签图片标签超链接标签外部链接与内部链接 注释标签 <!-- 有注释 -->无注释ctrl / 快捷键可以快速进行注释/取消注释. 注意 注释不能传达负能量!!! 标题标签 有六个, 从 h1 - h6. 数字越大, 则字体越小. <h…

读SQL进阶教程笔记14_SQL编程要点

1. 消灭NULL 1.1. NULL惹人讨厌的原因 1.1.1. 进行SQL编码时&#xff0c;必须考虑违反人类直觉的三值逻辑 1.1.2. 指定IS NULL、IS NOT NULL的时候&#xff0c;不会用到索引&#xff0c;SQL语句执行起来性能低下 1.1.2.1. 1 NULL NULL2- NULL NULL3 &#xff0a; NULL …

BrainStat:用于全脑统计和多模态特征关联的工具箱

BrainStat工具箱在茗创科技往期推文【点此阅读→资源分享 | 利用机器学习进行高级MRI分析】中作过简单介绍。近日&#xff0c;NeuroImage杂志发布了题为BrainStat: a toolbox for brain-wide statistics and multimodal feature associations的预印版文章。这篇文章详细阐述了B…

测试开发备战秋招面试5-牛客刷题之链表篇

趁着5.1假期把牛客网的必刷的TOP101过一遍&#xff0c;额&#xff0c;题目量有点大&#xff0c;争取5天给刷完吧&#xff0c;哈哈&#xff0c;加油啦。再用雷布斯的那句话来激励自己吧&#xff1a;努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺…

学习Python需要注意什么?分享一下如何提升写代码的质量

作为程序员&#xff0c;每天都会面对各种各样的问题和挑战。需求的变更、代码的维护和修复、测试的问题&#xff0c;以及线上出现的各种异常等等&#xff0c;这些都需要我们不断地投入精力去解决。但是&#xff0c;我们不能只关注在解决问题上&#xff0c;还需要关注代码质量。…

IDE - Android Studio/Xcode历史版本下载

文章目录 前言Android Studio1. 历史版本下载2. 文件完整性校验 Xcode1. 历史版本下载2. 网络环境模拟工具2.1 下载2.2 安装2.3 卸载 最后 前言 最近升级开发工具老是遇到各种兼容性问题导致需要降回老版本&#xff0c;Xcode历史版本下载方便倒还好&#xff0c;Android Studio…