《0基础》学习Python——第十六讲

《文件读写》

一、什么是文件读写

        文件读写是指在Python程序中对文件进行读取写入操作。通过文件读写,可以读取文件中的数据,或者向文件中写入数据

        Python提供了多种文件读写的方式,其中最常用的方式是使用open()函数打开一个文件,并通过文件对象进行读写操作。文件读写的基本流程如下:

  1. 使用open()函数打开文件,可以指定文件路径、文件打开方式(如读取模式'r'、写入模式'w'、追加模式'a'等),并将返回的文件对象赋值给一个变量。

  2. 使用文件对象的read()方法读取文件内容,可以指定参数来读取指定数量的字符或者全部内容。

  3. 使用文件对象的write()方法写入数据到文件中,可以指定参数为要写入的字符串。

  4. 使用文件对象的close()方法关闭文件释放资源

        除了使用open()函数进行文件读写外,还可以使用with语句来自动管理文件的打开和关闭,以避免忘记关闭文件导致资源泄漏的问题。使用with语句打开文件后,文件会在with块结束后自动关闭。                

        另外,Python还提供了其他一些用于文件读写的函数和方法,如readline()、readlines()writelines()等,可以根据实际需要选择使用。

二、绝对位置、相对位置

        在Python中,绝对位置和相对位置用于描述文件或目录在文件系统中的位置关系。

        绝对位置是指文件或目录在整个文件系统中的具体路径。绝对位置使用完整的路径表示,从根目录开始一直到文件或目录的路径。例如,D:\soft\pycharm\code\pythonProject\123.txt,即从盘符开始一直往内部打开文件知道找到需要打开的文本文件名

        相对位置是指文件或目录相对于当前工作目录的位置关系。当前工作目录是指程序执行时所在的目录。相对位置使用相对于当前工作目录的路径表示。例如,如果当前工作目录是D:\soft\pycharm\code\pythonProject,那么pythonProject\123.txt就是一个相对位置,表示位于当前工作目录下的pythonProject目录下的123.txt文件。

        注意:相对位置存在相对概念 , ./ 表示同级文件夹下, ../ 表示上级目录下,

三、open方法

        open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)

完整形式:
        
参数解释:
        file: 必需,文件路径(相对或者绝对路径)
        mode: 可选,文件打开模式,默认为 r
        encoding: 一般使用utf8编码
        errors: 报错级别
        newline: 区分换行符
        buffering: 设置缓冲
        closefd: 传入的file参数类型

四、常用mode 参数主要有

        'r':只读模式,文件不存在则返回异常
        'w':覆盖写模式,文件不存在则创建,存在则覆盖原文件
        'x':创建写模式,文件不存在则创建,存在则返回异常
        'a':追加写模式,文件不存在则创建,存在则追加写内容
        'b':二进制文件模式,与 r、x、w、a 组合使用,例如:‘rb’,二进制模式读
        't':文本文件模式,与r、x、w、a 组合使用,例如:‘rt’,以文本文件模式读
        '+':与r、x、w、a 一同使用,在原功能上增加同时读写功能,例如:‘r+’以读写模式打开文件。可以读取和写入文件内容。如果文件不存在则返回异常。  "w+":以读写模式打开文件。可以读取和写入文件内容。如果文件不存在,会创建新文件。如果文件存在,会清空文件内容。"a+":以追加读写模式打开文件。可以读取和追加写入文件内容。如果文件不存在,会创建新文件。"x+":以创建读写模式打开文件。可以读取和写入文件内容。如果文件已经存在则打印异常。

五、使用with语句

        由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,可以使用try ... finally来实现:

但每次都这么写实在太繁琐,所以Python引入了with语句来自动调用close()方法

这和try ... finally是一样的,但代码更佳简洁,并且不必调用f.close()方法
注意:with open()打开文件也有他的弊端,如下代码:
if __name__ == '__main__':for i in range(10):pass# with open一个文件不需要关闭文件# 如果能够一次性写完 用这个比较好with open("./data.txt", "r", encoding="utf8") as fp:print(fp.readline(10))pass

加入循环之后就会不停地打开关闭,这样对文件会有很大程度的损坏,所以最好是一次性写完写入的文件内容,以防多次打开关闭文件。

六、读文件

        要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

以下是三种打开文件时地址的格式,因为会有 \n等转义字符

        f = open('C:\\users\\shujia\\desktop\\test.txt', 'r',encoding="UTF-8")

        f = open('C:/users/shujia/desktop/test.txt', 'r',encoding="UTF-8")

        f = open(r'C:\users\shujia\desktop\test.txt', 'r',encoding="UTF-8")

        

        其中c:\\users\\shujia\\desktop\\test.txt表示文件的绝对位置,

        encoding="UTF-8"表示编码方式是UTF-8的形式

        ' r '标示符表示,这样成功地打开了一个文件,如果文件不存在,open()函数就会抛出一个IOError的错误,如果文件成功打开,调用read方法可以把内容读到内存,用一个str对象接收:

f.read() 得到'Hello, world!'文件使用完毕后调用close()方法可以关闭文件:f.close()

假设创建了一个文本文档 123.txt,其绝对路径为D:\soft\pycharm\code\pythonProject\123.txt

内部有这样的一段内容:

那么如果想读取文件内容,就可以用以下代码:

if __name__ == '__main__':fp=open(r"D:\soft\pycharm\code\pythonProject\123.txt",'r',encoding='utf-8')#打开文件夹print(fp.read(10))#其中的10表示打印的长度,如果不写则打印全部,如果写的很大,则打印全部内容fp.close()  #关闭文件夹

其打印结果为:

f.read(size):读取文件f的内容,size为文件长度,不写参数则读取文件全部内容

f.readline(size):读取文件中一行内容,size为该行的长度,不写参数size则读取第一行全部内容

f.readlines(size): 读取文件所用的行,参数表示读取的长度,如果第一行没有超过参数所示长度则打印第二行,以此类推,如果没有超过下一行则打印下一行全部内容,以列表形式返回

f.seek(offset): 改变当前文件操作指针位置,offset为0则为文件开头,为2则为结尾

if __name__ == '__main__':fp=open("D:/soft/pycharm/code/pythonProject/123.txt",'r',encoding='utf-8')#打开文件夹print(fp.read(10))#其中的10表示打印文件内容的长度,如果不写则打印全部文件内容,如果写的很大,则打印全部内容print(fp.readline(10))#表示打印第一行的内容,括号内参数10表示打印字符长度,如果不写则默认打印第一行全部内容print(fp.readlines(25))#返回的参数读取文件长度的列表,参数没到一行 读一行  参数超过一行读完下一行print(fp.readlines())# 读取所有的行 存入列表中fp.close()  #关闭文件夹

七、写文件

        写文件是指向文件中写入数据或内容的操作。在Python中,可以使用write()方法来写入文件。该方法接受一个字符串作为参数,并将其写入文件。写入时,文件指针会自动定位到当前写入的位置,并在写入后移动到下一个位置。

f.write(s)  :把字符串s写入文件f中

f.writelines(a):把列表类型的a中各元素连接起来写入文件

如下两个代码:

lt=['abc','ABC','12345','666']
f=open(f'list1.txt','w',encoding='utf-8') #以w模式创建一个文件夹list1.txt
f.write('-'.join(lt))  #把通过join函数处理过的数据写入列表
f.close()

其输出结果为生成一新的文件夹,写入内容如下:

        list1.txt: 

lt=['abc','ABC','12345','666']
f=open(f'list2.txt','w',encoding='utf-8')#以w模式创建一个文件夹list2.txt
f.writelines(lt)  #直接把列表内的数据全部连接起来写入文件list2.txt
f.close()

其输出结果为生成一新的文件夹,写入内容如下:

        list2.txt:

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

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

相关文章

深入理解Android中的缓存与文件存储目录

🌟 引言 在Android应用开发中,合理管理应用的数据存储至关重要。应用可能需要保存各种类型的数据,从简单的配置信息到多媒体文件,甚至是缓存数据以提高性能和用户体验。Android提供了多个内置目录来满足这些需求,但它…

kubernetes集群环境搭建(二)

kubernetes集群类型 kubernetes集群大体上分为两类:一主多从和多主多从 一主多从:一台Master节点和多台Node节点,搭建简单,但有单机故障风险,适合于测试环境部署多主多从:多台Matser节点和多台Node节点&…

MyBatis的原理?

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数及获取结果集。MyBatis可以通过简单的XML或注解来配置和映射原生类型、接口和Java的POJOs(Plain Old Java Objects)为…

linux中导出sql脚本

linux中导出sql脚本 前言: 需要将数据库xx表导出sql脚本、数据迁移、数据备份… 执行命令 1. 导出整个数据库的数据 -- username: 是数据库的用户名 -- database_name: 是要导出数据的数据库名 -- dump_file.sql: 是导出的 SQL 文件名,你可以自己定义…

策略模式原理与C++实现

定义 定义一些列算法,把他们一个个封装起来,并且使他们可以相互替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展、子类化)。 C实现 在不考虑策略模式的情况…

js基础-小数计算,并转换成带两位的百分比

小数计算,并转换成带两位的百分比 1、需求说明2、执行过程2.1 计算 s12.2 计算 s2 1、需求说明 在工作中,有时需要将计算的小数转换成百分比小数,但是在js代码中,计算公式一点点的区别就会影响到最终的结果,如下面代码…

vue视频、图片自动轮播并伴随进度条

废话不多说直接上代 多余没用的部分自己看着删除 <template><div class"showImg"><el-carousel ref"carousel" trigger"hover" :autoplay"false" class"dimControl" :height"${(currenInnerWith*0.37…

极速提升性能:Laravel路由缓存的妙用

极速提升性能&#xff1a;Laravel路由缓存的妙用 引言 Laravel是一个优雅而强大的PHP Web应用框架&#xff0c;它提供了许多功能来帮助开发者创建高性能的应用。路由系统是Laravel的核心组件之一&#xff0c;负责将请求的URL映射到相应的控制器方法。然而&#xff0c;路由的注…

docker 安装 使用 ubuntu

安装 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin测试 sudo docker info 添加到用户组 # 添加docker用户组&#xff0c;一般已存在&#xff0c;不需要执行sudo groupadd docker# 将登陆…

spring框架之AOP注解方式(java代码实例)

目录 半注解形式&#xff1a; 业务层接口实现类&#xff1a; 编写切面类&#xff1a; 在配置文件里面唯一需要加的&#xff1a; 测试类&#xff1a; 全注解形式&#xff1a; 不要配置文件&#xff0c;改为配置类&#xff1a; 同样的业务层接口实现类&#xff1a; 同样的…

2024年【天津市安全员C证】免费试题及天津市安全员C证考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 天津市安全员C证免费试题根据新天津市安全员C证考试大纲要求&#xff0c;安全生产模拟考试一点通将天津市安全员C证模拟考试试题进行汇编&#xff0c;组成一套天津市安全员C证全真模拟考试试题&#xff0c;学员可通过…

Java红娘婚恋相亲交友系统小程序源码

红娘婚恋相亲交友小程序&#xff1a;遇见爱情&#xff0c;从指尖开始&#x1f496; &#x1f4f1; 掌中红娘&#xff0c;随时待命 &#x1f48c; 在这个数字化时代&#xff0c;爱情也迎来了它的新舞台——“红娘婚恋相亲交友小程序”。只需轻轻一点&#xff0c;你的专属红娘就…

QT--控件篇四

一、对话框 在软件开发中&#xff0c;对话框&#xff08;Dialog&#xff09;是一种常见的用户界面元素&#xff0c;用于与用户进行交互和获取信息。它通常以模态或非模态的形式出现&#xff0c;模态对话框会阻止用户与应用程序的其他部分交互&#xff0c;直到对话框关闭为止&a…

Pod亲和性、Pod反亲和性、污点与容忍度、API资源对象PV和PVC和本地存储

一、Pod亲和性 pod亲和性的对象为Pod&#xff0c;目的是实现&#xff0c;新建Pod和目标Pod调度到一起&#xff0c;在同一个Node上。 示例&#xff1a; 1.部署一个nginx的pod [rootaminglinux01 ~]# cat testpod01.yaml apiVersion: v1 kind: Pod metadata:name: testpod01la…

【14】水仙花数

水仙花数 题目描述 打印出所有的“水仙花数”。 所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。 例如&#xff1a;153是“水仙花数”&#xff0c;因为&#xff1a;153 1的3次方 5的3次方 3的3次方 输入格式 无需输入输出格式 输出所有水仙…

硕博电子智能控制器、触摸显示屏在集装箱跨运车上的应用

港口跨运车&#xff0c;又称跨运车或轮胎式龙门吊(RTG)&#xff0c;专门用于集装箱码头的装卸和搬运作业&#xff0c;能够迅速完成集装箱在码头前沿、堆场区域以及仓库之间的运输和堆垛&#xff0c;大幅度缩短了装卸周期&#xff0c;提高了港口物流周转效率。 现代跨运车往往配…

Web 安全之 VAPT (漏洞评估与渗透测试)详解

目录 VAPT 的基本概念 VAPT 的重要性 VAPT 的实施步骤 小结 VAPT&#xff08;Vulnerability Assessment and Penetration Testing&#xff0c;漏洞评估与渗透测试&#xff09;是网络安全领域中的一种评估方法&#xff0c;结合了漏洞评估和渗透测试两种紧密相连但又有所区别…

java中的原子性和实现

原子性&#xff1a;不可中断的一系列指令 处理器如何实现原子性 处理器基于对总线加锁和缓存加锁的方式来实现多处理器之间的原子操作。 总线加锁&#xff1a;只有一个处理器能处理这个内存&#xff0c;其他处理器的所有请求都被阻塞&#xff0c;该处理器独占共享内存。 缓…

C++笔试强训4

文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 %o就是输出八进制的无符号数&#xff0c;0123&#xff0c;&#xff0c;以0开头&#xff0c;本来就是八进制&#xff0c;所以输出为123&#xff0c;123是十进制&#xff0c;转化为八进制就是173. 故选…

【Python基础教程】制作一个宿舍管理系统,数据库宿舍管理系统代码!(完整版,附源码)

今天我们一起学习一个新的小案例——宿舍管理系统。主要涉及列表、字典的初始化、增加、删除、修改和查询操作&#xff0c;以及函数的定义和调用。 一、需求&#xff1a; 有操作指引界面&#xff0c;显示操作号 能添加一个新的入住学生信息&#xff0c;包括学生姓名、宿舍号床…