《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节点&…

策略模式原理与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…

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…

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

港口跨运车&#xff0c;又称跨运车或轮胎式龙门吊(RTG)&#xff0c;专门用于集装箱码头的装卸和搬运作业&#xff0c;能够迅速完成集装箱在码头前沿、堆场区域以及仓库之间的运输和堆垛&#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;包括学生姓名、宿舍号床…

如何让员工在培训后持续应用六西格玛工具?

要让员工在培训后持续应用六西格玛工具&#xff0c;首先需要明确六西格玛的核心价值及其在企业中的应用意义。六西格玛是一种数据驱动的管理方法论&#xff0c;旨在通过减少变异和浪费&#xff0c;提高流程效率和质量&#xff0c;进而提升企业的竞争力。然而&#xff0c;仅仅通…

JRebelXRebel在线激活(亲测可用)

包含所有新旧版本&#xff0c;包括2023.4.2、2023.4.1、2023.4.0、2023.3.2、2023.3.1、2023.3.0、2023.2.2、2023.2.1、2023.2.0、2023.1.2、2023.1.1 等以及所有2022版本 JRebel&XRebel激活服务器地址 激活服务器地址&#xff08;路线1,推荐&#xff09;&#xff0c;可…

走进NoSql

一、引入 1.1什么是NoSql NoSQL&#xff08;Not Only SQL&#xff09;是一组非关系型数据库&#xff08;或称为非SQL数据库&#xff09;的统称&#xff0c;它们提供了与传统的关系型数据库不同的数据存储和检索方式。NoSQL数据库通常用于处理大量的、分布式的、非结构化或半结…

数据精度丢失

js数据精度丢失 最近看面试题想到了之前在开发钟遇到过的问题&#xff0c;现总结一下 在开发过程中&#xff0c;发现从后台返回的数据结构中的id字段在前端显示为不正确的值。经过排查&#xff0c;怀疑是JavaScript中Number类型精度丢失的问题。通过将id字段的类型从Number改为…

快手开源LivePortrait,实现表情姿态极速迁移,GitHub 6.5K Star

近日&#xff0c;快手可灵大模型团队开源了名为LivePortrait的可控人像视频生成框架&#xff0c;能够准确、实时地将驱动视频的表情、姿态迁移到静态或动态人像视频上&#xff0c;生成极具表现力的视频结果。如下动图所示&#xff1a; 来自网友测试LivePortrait 来自网友测试Li…

2.I/O口

I/O输出(点灯) 分析电路 看电路图&#xff0c;元器件形成电压差&#xff0c;即可点亮LED灯 代码编写 使用不同操作进行LED控制 #include "reg52.h" //51单片机头文件 #include <intrins.h> sbit LED1 P1^0; //引脚初始化&#xff1a;P1^0&#xff1a;对应引脚…

<Rust>egui部件学习:如何在窗口及部件显示中文字符?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第一篇博…

应用实践之基于MobileNetv2的垃圾分类

MobileNetv2模型原理介绍 前言 MobileNet是2017年由Google团队提出的轻量级CNN网络&#xff0c;专注于移动端、嵌入式或IoT设备。它使用深度可分离卷积的思想来减小模型参数与运算量&#xff0c;同时引入宽度系数和分辨率系数以满足不同应用场景的需求。MobileNetV2则采用倒残…