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

news2024/11/23 19:50:33

目录

先解释一下引文的答案

一、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()

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

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

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

相关文章

腾讯云2核2G3M服务器够用吗?腾讯云2核2G3M云服务器性能评测

阿里云轻量应用服务器2核2G3M带宽优惠价格62元一年,100%CPU性能,3M带宽下载速度384KB/秒,40GB SSD系统盘,月流量200GB,折合每天6.6GB流量,超出月流量包的流量按照0.8元每GB的价格支付流量费,地域…

【c++】vector模拟

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能手撕vector模拟 > 毒鸡汤:在等待…

PCL提示无法读取强度信息(Failed to find match for field ‘intensity‘.)简单解决方法

问题: 使用CC或者其他软件将las或者其他格式点云转成PCD格式后,然后使用PCL的库进行读取,有时会碰到Failed to find match for field intensity.提示,解决方法如下; 处理方法: 一个比较简单的方法如下&…

对比开源大语言模型的自然语言生成SQL能力

背景 NL-to-SQL(自然语言到结构化查询语言)任务是自然语言处理(NLP)领域的一个难题。 它涉及将自然语言问题转换为 SQL 查询,然后可以针对关系数据库执行该查询来回答问题。 该任务是 NLP 中的一个专门子领域&#xf…

C++补充内容--语法篇

这里写目录标题 语法其他语法函数的存储类函数参数默认值格式默认参数位置重载函数的默认参数 指针名与正常指针的自增自减以及解引用与的优先级问题指针的赋值、加减数字、加减指针二维数组中的一些指针辨析输出调用字符指针时 会将该指针以及之后的元素全部输出二维数组未完全…

【力扣题解】P530-二叉搜索树的最小绝对差-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P530-二叉搜索树的最小绝对差-Java题解🌏题目描述💡题解&…

【性能测试入门】详解客户端性能测试和服务器端性能测试!

一:客户端性能测试和服务器端性能测试 客户端性能测试和服务器端性能测试是两个不同但相关的概念: 客户端性能测试: - 测试应用程序客户端(如Web浏览器、移动应用等)的性能,例如加载时间,响应时间等。 - 测试在不同系统配置(CPU、内存、网络等)下客户端的运行性…

在Gitee上维护Erpnext源

在Gitee上维护Erpnext源 官方的frappe和erpnext地址: GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript GitHub - frappe/erpnext: Free and Open Source Enterprise Resource Planning (ERP) 1, 仓库地址输入frappe的官…

cissp 第10章 : 物理安全要求

10.1 站点与设施设计的安全原则 物理控制是安全防护的第一条防线,而人员是最后一道防线。 10.1.1 安全设施计划 安全设施计划通过关键路径分析完成。 关键路径分析用于找出关键应用、流程、运营以及所有必要支撑元索间的关系。 技术融合指的是各种技术、解决方案…

适用于生物行业的生信云平台

随着基因检测技术的不断发展,生物信息云平台在基因检测行业的应用越来越广泛。生物信息云平台是一种基于云计算的技术,可以将基因检测数据存储在云端,并通过数据分析、挖掘等技术手段,对基因数据进行处理、分析和解读。 这种技术的…

16、Kubernetes核心技术 - 节点选择器、亲和和反亲和

目录 一、概述 二、节点名称 - nodeName 二、节点选择器 - nodeSelector 三、节点亲和性和反亲和性 3.1、亲和性和反亲和性 3.2、节点硬亲和性 3.3、节点软亲和性 3.4、节点反亲和性 3.5、注意点 四、Pod亲和性和反亲和性 4.1、亲和性和反亲和性 4.2、Pod亲和性/反…

实战干货:用 Python 批量下载百度图片!

为了做一个图像分类的小项目,需要制作自己的数据集。要想制作数据集,就得从网上下载大量的图片,再统一处理。 这时,一张张的保存下载,就显得很繁琐。那么,有没有一种方法可以把搜索到的图片直接下载到本地电…

python实现圆圈烟花_附完整源码【第21篇—python过新年】

文章目录 前言效果图(动态)完整代码代码讲解总结寄语 前言 烟花是一种庆祝、欢庆或庆典活动中常见的美丽表现,它们以多彩的光芒和炫丽的形状为人们带来欢乐和惊喜。在这个项目中,我们将使用Python编程语言创建一个简单而有趣的程…

使用printJS使网页打印成PDF、网页html结合printJS导出为pdf

先放几个参考链接 感谢! Vue使用PrintJS实现页面打印功能_vue print.js 设置打印pdf的大小-CSDN博客 前台导出pdf经验汇总 (html2canvas.js和浏览器自带的打印功能-print.js)以及后台一些导出pdf的方法_iqc后台管理系统怎么做到导出pdf-CSD…

第34期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

x-cmd pkg | doggo - 现代化的 DNS 客户端

目录 简介首次用户快速实验指南功能特点类似工具与竞品进一步探索 简介 doggo 是一个由 Karan Sharma 于 2020 年使用 Go 语言开发的 DNS 客户端。它类似于 dig 命令,但旨在以现代化、简洁和可读的格式输出 DNS 查询结果。 首次用户快速实验指南 使用 x doggo 即可…

【AI视野·今日Robot 机器人论文速览 第六十八期】Tue, 2 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 2 Jan 2024 Totally 12 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Edge Computing based Human-Robot Cognitive Fusion: A Medical Case Study in the Autism Spectrum Disorder Therapy Author…

SpringBoot+RocketMQ集群(dledger)部署完整学习笔记

文章目录 前言一、单台集群部署二、多台集群部署1.修改配置2.dashboard修改 三、整合springboot1.引入pom和修改yml2.编写消费者3.编写生产者4.测试效果 总结 前言 RocketMQ集群方式有好几种 官网地址 https://rocketmq.apache.org/zh/docs/4.x/deployment/01deploy 2m-2s-asy…

CISP-DSG和CDGA该如何选择?

同样是数据治理,CDGA证书和CISP-DSG证书,它们之间有什么区别和各自的优势呢❓ 1️⃣CISP-DSG CISP-DSG证书聚焦于信息an全领域,特别guan注数据an全治理。 国际知名zi询机构Gartner用“风暴之眼”比喻“数据an全治理”,&#x1f44…

kubernetes(k8s)集群常用指令

基础控制指令 # 查看对应资源: 状态 $ kubectl get <SOURCE_NAME> -n <NAMESPACE> -o wide 查看默认命名空间的pod [rootk8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 3h53m查看所有pod [roo…