《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://xiahunao.cn/news/3248505.html

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

相关文章

uniapp打包h5,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND

在manifest.json内找到web配置修改运行的基础路径

9 Docker实践_安装JDK

欢迎来到一夜看尽长安花 博客&#xff0c;您的点赞和收藏是我持续发文的动力 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何想要讨论的问题可联系我&#xff1a;3329759426qq.com 。发布文章的风格因专栏而异&#xff0c;均自成体系&#xff0c;不足…

5G以太网和5G前传业务的有效解决方案——25G可调DWDM光模块

信息技术的迅猛发展和数据传输需求的不断增加&#xff0c;光通信技术在现代网络中扮演着至关重要的角色。DWDM技术通过在一根光纤上使用多个不同波长的光信号同时传输&#xff0c;大幅提高了数据传输的容量。而可调光模块则能够在多种波长之间进行切换&#xff0c;实现灵活、高…

昇思25天学习打卡营第14天|munger85

基于MindNLPMusicGen生成自己的个性化音乐 这个所谓的个性化的音乐就是指你输入一段文字它会根据这个文字输出一段音乐这个音乐是贴近于那段文字的所以叫做文生成音乐&#xff0c; 如果网络正常的话就可以直接从下载这个模型。 那么音乐生成的有两种方式呢有两种方式&#xff…

计算机网络基础:局域网、广域网及OSI七层模型解析

文章目录 一、局域网和广域网1、局域网&#xff08;LAN - Local Area Network&#xff09;2、广域网&#xff08;WAN - Wide Area Network&#xff09;3、对比局域网和广域网 二、OSI七层模型1、OSI的七层网络结构2、OSI的数据传输方式3、网络与操作系统的关系 一、局域网和广域…

基于自编码器和孪生框架的乳腺组织病理图像分类方法

乳腺癌组织病理图像的自动分类是计算机辅助诊断系统的重要任务之一。由于乳腺癌组织病理图像具有类间差异小、类内差异大的特点&#xff0c;提取用于乳腺癌分类的特征比较困难。为了解决这一问题&#xff0c;设计了一种改进的自编码器(AE)网络&#xff0c;该网络使用Siamese框架…

【BUG】已解决:TypeError: object of type ‘int‘ has no len()

已解决&#xff1a;TypeError: object of type ‘int‘ has no len() 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市…

【windows|015】UDP协议详解

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

学懂C语言(四):C语言数据类型

目录 一、数据类型分类 二、存储大小和值范围 三、类型转换 在 C 语言中&#xff0c;数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。 一、数据类型分类 C 中的类型可分为以下几…

内六角螺丝外观检测有多严格?

沉头内六角螺丝是一种常见的螺丝类型&#xff0c;具有内部六角孔和沉头设计。这种螺丝通常需要使用内六角扳手或扳手来拧紧或松开。沉头设计让螺丝头部潜入被连接的物体表面&#xff0c;使其表面平整&#xff0c;不会凸起。 沉头设计使螺丝头部潜入物体表面&#xff0c;实现隐…

PAT甲级真题1042判断二叉搜索树

镜像后的树 样例是前序遍历,中序序列就是把前序序列sort一下,然后根据中序序列和前序序列构造一棵树,和树的遍历一样 前序序列:8 6 5 7 10 8 11 中序序列:5 6 7 8 8 10 11 镜像后的中序序列:11 10 8 8 7 6 5 ###在中序序列中有多个相同的根结点,取第一个 ###如果在中序序列中…

解决element-ui e-table表格中使用多选,当翻页时已选中的数据丢失

用element-ui中的table时&#xff0c;当有多选又有翻页功能时&#xff0c;点击翻页后之前选中的数据会丢失&#xff0c;怎么使表格具有记忆功能呢 element-ui API中有几个属性可以供我们完美解决这个问题 1.单元格的属性和方法&#xff1a; 2.表格的方法&#xff1a; <el-…

数据预处理在建模中的重要性与常见方法(二):数据变化篇

1. 数据标准化 数据标准化是将数据转换到同一量纲&#xff0c;以消除不同量纲之间的影响&#xff0c;使数据具有可比性。常见的标准化方法包括Min-Max标准化和Z-score标准化。 &#xff08;1&#xff09;Min-Max标准化 应用场景&#xff1a;适用于对特征范围有要求的模型&…

AI发展除了带来失业,还带来了不少副业兼职,一键无脑生成,月入1W+

前言 今天&#xff0c;我想和大家分享一下在当前经济下行、就业压力加大的背景下&#xff0c;个人如何利用AI技术开展副业&#xff0c;实现月入过万。 近年来&#xff0c;AI技术的发展虽然带来了不少就业岗位的流失&#xff0c;但同时也为我们提供了许多新的副业机会。今天我…

LNMP环境配置问题整理

首先是一键安装直接报错: 换教程:搭建LNMP,步骤最详细,附源码,学不会打我-CSDN博客 mysql安装成功之后: MySQL 启动报错:Job for mysqld.service failed because the control process exited with error code. 如果所有方法都试过之后卸载后重装可以快速解决: 参考…

matlab PID tuner整定工具箱的用法

从主页的APP中搜索到它&#xff1a; 按照下图IMPORT导入被控对象的传递函数 在下图的Inspect按钮中可以看到导入的被控对象的传函。 在下图的Type中选择控制器类型&#xff1a; 在下图的Form中选择PID的形式&#xff1a;有两种可选&#xff1a;平行式Parallel和标准式Standard …

【Vue3 ts】echars图表展示统计的月份数据

图片展示 此处内容为展示24年各个月份产品的创建数量。在后端统计24年各个月份产品数量后&#xff0c;以数组的格式发送给前端&#xff0c;前端负责展示。 后端 entity层&#xff1a; Data Schema(description "月份统计")public class MonthCount {private Stri…

SCSA第九天

DPI和DFI的对比 1&#xff0c;DFI仅对流量行为分析&#xff0c;只能对应用类型进行笼统的分类&#xff0c;无法做到精细的识别 2&#xff0c;如果流量进行加密的话&#xff0c;DPI可能在没有解密的情况无法进行识别&#xff0c;但是DFI不受影响 IPS&#xff08;入侵防御&…

HarmonyOS介绍

一、什么是HarmonyOS HarmonyOS是新一代的智能终端操作系统&#xff0c;为不同设备的智能化、互联与协同提供了统一的语言&#xff0c;为用户带来简捷、流畅、连续、安全可靠的全场景交互体验。 二、HarmonyOS的核心理念 1、一次开发 多端部署 指的是一个工程&#xf…

基于SpringBoot+Vue的广场舞团系统(带1w+文档)

基于SpringBootVue的广场舞团系统(带1w文档) 基于SpringBootVue的广场舞团系统(带1w文档) 广场舞团&#xff0c;为用户随时随地查看广场舞团信息提供了便捷的方法&#xff0c;更重要的是大大的简化了管理员管理广场舞团信息的方式方法&#xff0c;更提供了其他想要了解广场舞团…