Python学习之路——文件部分【文件的读取】

目录

先解释一下引文的答案

一、open()打开函数

二、mode常用的三种基础访问模式

三、读-操作相关方法

(一)read方法

(二)readlines方法

(三)with open 语法

(四)操作汇总

(五)注意

(六)代码示例

1、打开文件

2、read读取文件

3、readlines读取文件

4、readline读取文件

5、文件关闭

四、练习案例


先解释一下引文的答案

read返回的是字符串类型,可以指定读取的字节数,不指定默认读取全部

readline返回的是字符串,读取文件内一行的内容

readlines返回的是列表,读取文件内的全部内容,以行为单位,列表内的每一个元素就是一行

一、open()打开函数

在Python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:

# open(name, mode, encoding)
# name:是要打开的目录文件名的字符串(可以包含文件所在的具体路径)。
# mode:设置打开文件的模式(访问模式):只读、写入、追加等。
# encoding:编码格式(推荐使用utf-8

ctrl + 鼠标左键,进入源码,发现encoding并不是第三个参数,所以要使用关键字参数关键字参数icon-default.png?t=N7T8https://blog.csdn.net/weixin_57154777/article/details/135400272?spm=1001.2014.3001.5501

二、mode常用的三种基础访问模式

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式
w

打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,

原有内容会被删除。如果该文件不存在创建新文件

a

打开一个文件用于追加,如果该文件已存在,新的内容将会被写入到已有的内容之后

如果该文件不存在创建新文件进行写入

三、读-操作相关方法

(一)read方法

文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。返回的是字符串。

(二)readlines方法

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

在D盘下创建一个文件python.txt,里面添加内容如下:

使用readlines读取文件内的内容

f = open('D:/python.txt', 'r', encoding='utf-8')
ff = f.readlines()
for line in ff:
    print(line)

# 也可以
content = f.readlines()
print(content)

# 不管前面如何操作,一定要记得关闭文件
f.close()

其中有空白行的就是读取到了\n换行符

(三)with open 语法

with open('D:/python.txt', 'r') as f:
    f.readlines()
# 通过with open的语句对文件进行操作
# 可以在操作完成后自动关闭文件,避免遗忘掉close方法

(四)操作汇总

操作功能
文件对象 = open(file,mode,encoding)打开文件获得文件对象
文件对象.read(num)

读取指定长度字节

不指定num读取文件全部

文件对象.readline()读取一行
文件对象.readlines()读取全部行,得到列表
for line in 文件对象for循环文件行,依次循环得到一行数据
文件对象.close()关闭文件对象
with open() as f通过with open语法打开文件,可以自动关闭

(五)注意

操作完成之后一定要用close()方法去关闭文件,不然文件就会一直被占用,进行不了其他的操作

(六)代码示例

1、打开文件

2、read读取文件

3、readlines读取文件

    # 打开文件
    f = open('D:/python.txt', 'r', encoding='utf-8')

    # 读取文件  read()
    content01 = f.read()
    print(content01)

    # 读取文件  readLines()
    content02 = f.readlines()
    print(content02)

思考一下,这段代码会不会报错

是的,虽然不会报错,但是readlines读取不到文件的内容,列表为空

这是为什么呢,当然是因为没有关闭文件咯

    # 打开文件
    f = open('D:/python.txt', 'r', encoding='utf-8')

    # 读取文件  read()
    content01 = f.read()
    print(content01)

    # 关闭文件
    f.close()

    # 读取文件  readLines()
    content02 = f.readlines()
    print(content02)

那现在我添加了关闭文件的方法之后,这样对吗?

答案是不对的,你都把文件关了,还怎么去读取文件里面的内容呢:

这样才是正确的

    # 打开文件
    f1 = open('D:/python.txt', 'r', encoding='utf-8')

    # 读取文件  read()
    content01 = f1.read()
    print(content01)

    f1.close()

    # 读取文件  readLines()
    f2 = open('D:/python.txt', 'r', encoding='utf-8')
    content02 = f2.readlines()
    print(content02)
    f2.close()

切记一定要关闭文件,如若之后还要操作文件记得要打开,那么要打开就一定要关闭,以此递归思想,绝不会出错

4、readline读取文件

读取文件的一行的内容

    print()
    print('readline:')
    # 读取文件  readLine()——————一次读取一行
    f3 = open('D:/python.txt', 'r', encoding='utf-8')
    content03 = f3.readline()
    print(content03)

    # for循环读取文件行
    for line in f3:
        print(line)

5、文件关闭

文件关闭我们就不能只说文件关闭

我们应该

    # 文件的关闭
    if f3.closed:
        print('文件关闭成功')
    else:
        f3.close()
        print('文件关闭失败,已执行关闭操作')

    # with open 语法操作文件
    with open('D:/python.txt', 'r', encoding='utf-8') as f4:
        print(f4.read())
    if f4.closed:
        print('文件关闭成功')
    else:
        f4.close()
        print('文件关闭失败,已执行关闭操作')

四、练习案例

统计单词在文件内出现的次数

文件内准备如下内容:

统计句子中you的出现次数

上操作

def func03():
    f = open('D:/python.txt', 'r', encoding='utf-8')
    file_of_str = f.read()
    file_of_str = file_of_str.strip()
    file_of_str = file_of_str.replace('\n', ' ')
    file_of_str = file_of_str.replace('.', ' ')
    file_of_str = file_of_str.split(' ')
    print('split', file_of_str, type(file_of_str))
    count = 0
    for word in file_of_str:
        if word == 'you':
            count += 1
    print(count)
    f.close()

详细操作与解释

def func03():
    # 先打开文件进行读取
    f = open('D:/python.txt', 'r', encoding='utf-8')
    # 查看文件是否打开成功
    # print(f.read())
    # 或者怕忘记最后去close文件,可以使用
    # with open('D:/python.txt', 'r', encoding='utf-8') as f:
    #     print(f.read())
    # 成功读取文件内容之后,将文件内的句子的换行符和英文结尾符以及逗号都替换为空格
    # 由于 read 方法读取文件返回的是字符串类型,所以可以
    file_of_str = f.read()
    file_of_str = file_of_str.strip()
    file_of_str = file_of_str.replace('\n', ' ')
    file_of_str = file_of_str.replace('.', ' ')
    # 将字符串通过空格进行分隔得到列表(或者一开始就可以使用readlines去获取列表)
    file_of_str = file_of_str.split(' ')
    print('split', file_of_str, type(file_of_str))
    # 遍历列表
    # 定义一个用于计数的变量,初始化为0
    count = 0
    for word in file_of_str:
        if word == 'you':
            count += 1
    print(count)
    f.close()

再次强调一遍,文件操作完成之后,一定要关闭文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

损失函数篇 | YOLOv8 引入 Shape-IoU 考虑边框形状与尺度的度量

作者导读:Shape-IoU:考虑边框形状与尺度的度量 论文地址:https://arxiv.org/abs/2312.17663 作者视频解读:https://www.bilibili.com 开源代码地址:https://github.com/malagoutou/Shape-IoU/blob/main/shapeiou.py…

代码随想录day21 二叉搜索树进阶

530.二叉搜索树的最小绝对差 题目 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 思考 本题有一种笨办法,就是把二叉树的所有结点都存到一个vector里,因为二叉搜索树是左中右排序…

Spring整合MyBatis框架!!!

搭建环境&#xff1a; pom.xml: <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></pro…

Spring 整合MyBatis

创建工程 pom.xml <?xml version"1.0" encoding"UTF-8"?> 4.0.0 <groupId>com.by</groupId> <artifactId>Spring_MyBatis</artifactId> <version>1.0-SNAPSHOT</version><properties><!-- 项目源码…

高可用分布式部署Spark、完整详细部署教程

前言 Spark 是 UC Berkeley AMP Lab 开源的通用分布式并行计算框架。 Spark基于map reduce算法实现的分布式计算&#xff0c;拥有Hadoop MapReduce所具有的优点&#xff1b;但不同于MapReduce的是Job中间输出和结果可以保存在内存中&#xff0c;从而不再需要读写HDFS&#xff…

数据采集有哪些方法?HTTP代理起到什么作用?

在这个数字化的时代&#xff0c;数据就如同生活中不可或缺的元素&#xff0c;我们的行为、喜好、甚至是想法都被转化成了数字化的信息。那么&#xff0c;现代社会是如何进行数据的采集的呢&#xff1f;让我们一同来看看&#xff01; 1. 网络浏览行为的追踪 在我们浏览互联网的…

【Windows】之微软输入法配置小鹤双拼

前言 Windows 自带的输入法微软输入法本身就是个最简洁、最方便的输入法&#xff0c;不需要去安装多余的第三方输入法软件。同时&#xff0c;微软中文拼音输入法支持双拼输入法&#xff0c;但微软自带的双拼输入法不包含小鹤双拼方案的。所以&#xff0c;在这里将会讲解如何配置…

原生微信小程序如何动态修改svg图片颜色及尺寸、宽高(封装svgIcon组件)解决ios不显示问题

最终效果 前言 动态设置Svg图片颜色就是修改Svg源码的path中的fill属性&#xff0c; 通过wx.getFileSystemManager().readFile读取.xlsx文件 ios不显示需要把encoding设置 binary 把文件转成base64 封装svg-icon组件 1、在项目的components下新建svg-icon文件夹&#xff0c;新…

antd Table 动态数据 合并单元格(合并行)

antd Table 组件动态合并单元格 最近处理table的时候 遇到了要合并同一列的几行的情况&#xff0c;比如第一列的前面三行都是同一个对象的名字&#xff0c;此时合并显示比较妥当&#xff0c;但是数据是后端接口来的&#xff0c;而且可以筛选条件&#xff0c;搜索出来的数据就是…

目标检测 | YOLOv5 训练自标注数据集实现迁移学习

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要了解 YOLOv5 训练自标注数据集&#xff08;自行车和摩托车两种图像&#xff09;进行目标检测&#xff0c;实现迁移学习。YOLOv5 是一个非常流行的图像识别框架&#xff0c;这里介绍一下使用 YOLOv5 给使用 Labelme 标注…

AI模型部署落地综述(ONNX/NCNN/TensorRT等)

导读 费尽心血训练好的深度学习模型如何给别人展示&#xff1f;只在服务器上运行demo怎么吸引别人的目光&#xff1f;怎么才能让自己的成果落地&#xff1f;这篇文章带你进入模型部署的大门。 0 前言 模型部署的步骤&#xff1a; 训练一个深度学习模型&#xff1b; 使用不同…

NNDL总结

第四章 前馈神经网络 4.1 神经元 人工神经元&#xff0c;简称神经元&#xff0c;是构成神经网络的基本单元。 当>0时&#xff0c;为1&#xff0c;兴奋&#xff1b; 当<0时&#xff0c;为0&#xff0c;抑制。 激活函数的性质 1、连续可导的非线性函数。 2、激活函数及其导…

C语言 B树的分析与实现

本文主要说明了B树的概念、应用以及如何用C语言实现B树。 概述 有使用过数据库的朋友都知道&#xff0c;数据库需要存储大量的数据&#xff0c;并且查询数据的性能也需要一定的保证。那么数据库的底层数据结构是如何实现的呢&#xff0c;就是我们要讨论的B树和B树&#xff0c…

【电源专题】电池充放电中常说的0.2C是什么概念

在工作中我们时常会听到老员工说拿这个电池去做一下充放电,以0.2C充,0.2C放。那么这个0.2C到底是啥? 这就要说到电池C-rate概念。在《GB 31241:便携式电子产品用锂离子电池和电池安全要求》中我们可以看到3.7中写了额定容量为C,也就是制造商标明的电池或电池组容量。 那么…

src refspec master does not match any

新项目推送至 Git 空仓库时抛出如下异常 src refspec master does not match any 初始化 init 都做了但反复尝试 git push -u origin master 均无果 后发现权限不够 .... 起初设置为开发者,后变更为了主程序员再次尝试 push 成功 .... 以上便是此次分享的全部内容&#xff0c;…

MyBatisPlus学习二:常用注解、条件构造器、自定义sql

常用注解 基本约定 MybatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库表信息。可以理解为在继承BaseMapper 要指定对应的泛型 public interface UserMapper extends BaseMapper<User> 实体类中&#xff0c;类名驼峰转下划线作为表名、名为id的…

etcd储存安装

目录 etcd介绍: etcd工作原理 选举 复制日志 安全性 etcd工作场景 服务发现 etcd基本术语 etcd安装(centos) 设置&#xff1a;etcd后台运行 etcd 是云原生架构中重要的基础组件&#xff0c;由 CNCF 孵化托管。etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册…

单片机大小端模式

单片机大小端模式 参考链接 单片机干货-什么是大小端_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ju4y1M7Tx/?spm_id_from333.337.search-card.all.click&vd_sourcee821a225c7ba4a7b85e5aa6d013ac92e 特此记录 anlog 2024年1月2日

C语言——内存函数【memcpy,memmove,memset,memcmp】

&#x1f4dd;前言&#xff1a; 在之前的文章C语言——字符函数和字符串函数&#xff08;一&#xff09;中我们学习过strcpy和strcat等用来实现字符串赋值和追加的函数&#xff0c;那么除了字符内容&#xff0c;其他的数据&#xff08;例如整型&#xff09;能否被复制或者移动呢…

IDEA2023 最新版详细图文安装教程(Java环境搭建+IDEA安装+运行测试+汉化+背景图设置)

IDEA2023 最新版详细图文安装教程 名人说&#xff1a;工欲善其事&#xff0c;必先利其器。——《论语》 作者&#xff1a;Code_流苏(CSDN) o(‐&#xff3e;▽&#xff3e;‐)o很高兴你打开了这篇博客&#xff0c;跟着教程去一步步尝试安装吧。 目录 IDEA2023 最新版详细图文安…