Python08--文件读取及写入操作

这篇具有很好参考价值的文章主要介绍了Python08--文件读取及写入操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有些时候我们在处理数据之后就会想将我们的数据保存到文件中,实现数据的持久化。而不仅仅是输出到我们的集成开发环境的控制台上(直接打印在控制台上并不能够实现保存我们数据的功能,只要我们的集成开发环境已关闭,或者是电脑关机,那么我们打印出来的数据也会随之消失),例如我们在使用print函数打印输出数据时,只是将我们的数据暂时存放到了内存中,并没有存放到硬盘上。数据的持久化方式有两种,一种是存放到数据库中(这种方式一般是二进制的数据才可以,如音视频等),另外一种就是以文件的形式(这种方式,可以存放文本字符数据,如中文字符等)。

我们一般使用代码处理的数据都是非结构化的数据,即存放的位置位置是文件里面,而不是数据库里面。

涉及到文件处理的代码或者是相关的操作,在计算机中一般称之为文件流操作。文件流的操作有文件的读取和文件的写入两个操作。然后我们操作的对象可以是字节流对象(处理的是二进制文件)也可以是字符流对象(处理的是文本文件)。

字节流的数据读取和字符流的数据读取不同,因为字节流不用考虑编码格式问题,而我们的字符流数据因为会有中文数据的存在,所以需要考虑到将编码格式修改成utf-8的格式。

目录

一,文件的打开和读取

1,打开文件

2,文件读取 

1)使用read函数读取文件内容 

①读取文本字符出现乱码,指定编码格式为utf8

2)使用readline函数读取文件内容 

3)使用readlines函数读取文件内容 

3,总结三个读取文件的方法

二,文件的写入及关闭

1,write函数(方法)

2,close函数(方法)

3,writelines方法


 

一,文件的打开和读取

文件的打开,关闭与读写是文件的基本操作,需要注意是:数据写入完毕后需要将文件进行关闭,不仅是用来释放我们的计算机内存,也是为了我们后期在对文件进行其他操作时候可以执行成功,如果我们打开了一个文件,但是却没有去关闭,那么我们的程序就会默认我们的文件是打开,然后不管我们在对文件进行什么操作,都不会成功。说得再多,不如直接撸码来得直接,现在我们去使用代码来看一下具体的使用和效果:

1,打开文件

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\computer.txt")  # 以只读的方式打开文件
    print(f_or)   # 若文件打开成功(函数调用成功),返回一个文件对象

Python08--文件读取及写入操作

 我们现在只是简单的使用了open函数,并在里面传入了我们的文件路径进去即可实现打开文件的功能,然而事实上,该函数里面不止一个文件路径参数,还可以传入我们要使用的编码格式(encoding="")来打开我们的文件,以及打开后希不希望外界去修改我们的文件(mode="",如果不指定打开的模式,则默认使用只读模式打开文件)。那么文件的其他打开模式有哪些呢?我们来看如下表格:

 r/rb 只读模式。打开文件后只能读取,若文件不存在,则打开文件失败
w/wb 只写模式。若文件存在重写文件,否则创建该文件
r+/rb+ 读取(更新)模式。若文件不存在,则打开文件失败
w+/wb+ 读取(更新)模式。若文件不存在,则创建文件,已存在,则重写文件
a/ab 追加(更新)模式。以追加方式打开文件,只允许在该文件末尾追加数据,若文件不存在则,则创建新文件
a+/ab+ 追加(更新)模式。和a/ab的使用差不多,作用一样

后面带有b的表示以二进制方式打开文件,+表示以更新的方式打开文件。

我们的mode关键字可以省略,直接传入文件的打开模式也是可以的。我们先做个了解,知道里面可以传入这些参数,我们认识了另外一个写入函数之后,再去对比一下这些mode打开模式的异同。

2,文件读取 

1)使用read函数读取文件内容 

①读取文本字符出现乱码,指定编码格式为utf8

如下,当我们使用如下代码打开我们含有字符文件 时,会发现无法正常显示出来中文内容,并出现了乱码:

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\textdemo.txt",'r')  # 以只读的方式打开文件
    print(f_or.read())

Python08--文件读取及写入操作

 那么我们该如何去去掉这个乱码?其实很简单,只需要在open函数最后再传入encoding="utf8"即可,如下:

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\textdemo.txt",'r',encoding="utf8")  # 以只读的方式打开文件
    print(f_or.read())

Python08--文件读取及写入操作

 在上面我们使用了read函数读取了文件textdemo.txt,我们使用的是默认的read方法,即不传入参数(或者是设置为-1),则一次性读取并返回文件中的所有数据。

如果我们在里面传入了参数值(数值类型),即设置了读取数据的字节数,那么就会读取文件中指定长度的数据:

Python08--文件读取及写入操作

2)使用readline函数读取文件内容 

该函数只可以从指定文件中读取一行数据,如下:

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\textdemo.txt",'r',encoding="utf8")  # 以只读的方式打开文件
    print(f_or.readline())

Python08--文件读取及写入操作

如上我们可以看到,我们使用readline方法读取文件只会返回第一行的数据内容,之后换行的数据并不会返回,如果想要返回第二行的数据,我们可以给一个循环,重复调用该函数,或者是写两次print函数来打印:

1,调用两次print函数:

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\textdemo.txt",'r',encoding="utf8")  # 以只读的方式打开文件
    print(f_or.readline())
    print(f_or.readline())

Python08--文件读取及写入操作

2,使用for循环语句:

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\textdemo.txt",'r',encoding="utf8")  # 以只读的方式打开文件
    for i in range (1,3):
        print(f_or.readline())

Python08--文件读取及写入操作

3)使用readlines函数读取文件内容 

如果我们使用readlines方法取读取文件数据的话返回的就是个列表数据,在这一点上与之前的read方法和readline方法都很不同,它从之前的字符数据类型变成了列表类型的数据:

if __name__ == '__main__':
    f_or=open(r"F:\novels\English\textdemo.txt",'r',encoding="utf8")  # 以只读的方式打开文件
    print(f_or.readlines())   # 读取成功,返回一个列表

Python08--文件读取及写入操作

 如上,我们可以看到,使用readlines方法返回的确实是列表类型的数据,结合之前学习的列表数据相关的知识,我们如果想要取出来数据的话可以使用遍历的方式取获取。

3,总结三个读取文件的方法

以上介绍了3个读取文件的方法,当我们的read函数不传入参数时,实现的效果就会和readlines方法是一样的,两个都会一次性读取我们文件里面的数据,很多人会说这样子感情好,可以直接一次性就把我们的文件读取出来,以后直接使用这两个方法就行。实际上并不推荐这两种方法的使用,因为它适合于所读取的文件较小的时候,但是当我们的文件较大,像大数据的文件,那是可能会突破GB的文件,如果我们使用了read()和readlines()方法的一次性读取我们的文件,则可能会耗尽我们的系统内存,因为我们的计算机的内存是有限的。所以为了保证读取安全,推荐多次去调用read(n)方法---n:表示每次读取n字节的数据。

二,文件的写入及关闭

通过以上的open方法和read方法的使用,我们现在能够成功的打开一个文件,并能看到里面的内容,之后如果我们想要往该文件中写入数据内容的话,该怎么做呢?首先就需要用到一种函数---文件写入函数,我们可以使用两个函数来分别写入数据到文件中:1,write函数;2,writelines函数

1,write函数(方法)

我们先来认识write函数,该函数可以将指定字符串写入文件中,格式为:write(data)---data表示我们需要写入文件的数据(字符串),如果数据写入成功,write方法会返回本次写入文件的数据的字节数。如下,我们使用该方法来将写入数据到我们的textdemo.txt文件中:

if __name__ == '__main__':
    context="The computer grade examination is divided into four levels. "  # 字符串数据
    f_or=open(r"F:\novels\English\textdemo.txt",'r',encoding="utf8")  # 以只读的方式打开文件
    f_or.write(context)  # 写数据

 我们的代码如上,相信大家也发现了,我们的文件打开模式还是之前的只读模式,并且在这个文件模式下调用了write方法来进行写数据操作,想想结果会怎样?没错,结果就是会报错,如下:

Python08--文件读取及写入操作

 如上,因为文件用得是只读模式打开,所以我们无法进行数据写入的操作,那么,如果想要写数据又该怎么办?是的,使用r+,w/w+或者是a/a+函数:

1,r+,读写(更新)模式

该模式如果调用写入方法成功,会将之前已经存在的数据进行覆盖,并且,如果所要操作的文件 如果不存在的话就会报错。

if __name__ == '__main__':
    context="r+...The computer grade examination is divided into four levels. "  # 字符串数据
    f_or=open(r"F:\novels\English\textdemo.txt",'r+',encoding="utf8")  # 以只读的方式打开文件
    f_or.write(context)  # 写数据

Python08--文件读取及写入操作

 如果我想要在写的同时,也将写进去的文件内容输出到控制台的话就可以使用read函数来读取:

if __name__ == '__main__':
    context="r+...The computer grade examination is divided into four levels. "  # 字符串数据
    f_or=open(r"F:\novels\English\textdemo.txt",'r+',encoding="utf8")  # 以只读的方式打开文件
    f_or.write(context)  # 写数据
    print(f_or.read())   # 读数据并打印输出
    f_or.close()   #  关闭流,释放资源

Python08--文件读取及写入操作  如上,相信细心的大家也发现代码中多了一个close方法的调用。

2,close函数(方法)

该方法主要的作用就是用来关闭文件的,它和read()方法一样,是文件对象的内置对象,可以使用close方法来关闭已打开的文件textdemo.txt。可能会有人说,我就喜欢把文件一直打开着,就不关闭,哎~~,反正看起来也没啥事发生,就是玩~~~。其实也不是不可以,但是我们计算机中可打开的文件数量是有限的,每打开一个文件,剩下可打开的文件数量就会减少1个,打开的文件是会占用系统资源的,若打开的文件过多,会降低系统性能。有些时候还会造成数据的丢失,因此,在编写代码时,应该在程序中主动关闭不再使用的文件。

但是有些时候我们写得代码多了,就会一不小心忘记了去调用close方法来关闭我们的还打开着的文件,即很容易遗漏文件关闭操作。python很贴心地为我们提供了一个with语句来预定义清理操作,实现文件的自动关闭等。使用with语句后,我们的代码可以进行如下修改:

if __name__ == '__main__':
    context="r+...The computer grade examination is divided into four levels. "  # 字符串数据
    with open(r"F:\novels\English\textdemo.txt",'r+',encoding="utf8") as  f: # 已读写(更新)的方式打开文件
        f.write(context)  # 写数据
        print(f.read())   # 读数据并打印输出

Python08--文件读取及写入操作

 在上面的代码中,我们将打开文件后得到的文件对象使用as后的变量f来进行接受。使用了with语句之后我们的程序中无需再使用close方法关闭文件,因为我们的文件对象在使用完毕后,with语句会自动的帮我们关闭不用的文件。如此方便的with语句还不用起来?🐕接下来我们打开文件的方式都会使用with语句。

 2,w只写模式

 我们继续去探索文件打开模式的异同,之前知道了r,r+模式打开文件,现在我们去认识并使用w模式打开文件,如下:

if __name__ == '__main__':
    context="w...The computer grade examination is divided into four levels. "  # 字符串数据
    with open(r"F:\novels\English\textdemo.txt",'w',encoding="utf8") as  f: # 以读写(更新)的方式打开文件
        f.write(context)  # 写数据
        print(f.read())   # 读数据并打印输出【会报错】

Python08--文件读取及写入操作

3,w+读写(更新)模式

虽然w+说是可读可写的文件打开模式,但是我们在读取文件的时候是没有返回内容的,这是个需要注意的地方,接下来我们使用代码来看一下效果:

if __name__ == '__main__':
    context="w+...hei,The computer grade examination is divided into four levels. "  # 字符串数据
    with open(r"F:\novels\English\textdemo.txt",'w+',encoding="utf8") as  f: # 以读写(更新)的方式打开文件
        f.write(context)  # 写数据
        print(f.readlines())   # 读数据并打印输出

Python08--文件读取及写入操作

4,a追加模式

追加模式打开的文件不能读取,且追加的内容是从第一行数据的末尾开始追加:

if __name__ == '__main__':
    context="a...hei,The computer grade examination is divided into four levels. "  # 字符串数据
    with open(r"F:\novels\English\textdemo.txt",'a',encoding="utf8") as  f: # 以读写(更新)的方式打开文件
        f.write(context)  # 写数据
        print(f.read())   # 读数据并打印输出

Python08--文件读取及写入操作

 5,a+追加(更新)模式

 a+模式和a模式一样,用于在文件里面以追加的形式添加数据,而不是覆盖的形式,但是它也和w+一样,都是无法打印出来文件中的数据:

if __name__ == '__main__':
    context="a+...hei,The computer grade examination is divided into four levels. "  # 字符串数据
    with open(r"F:\novels\English\textdemo.txt",'a+',encoding="utf8") as  f: # 以读写(更新)的方式打开文件
        f.write(context)  # 写数据
        print(f.read())   # 读数据并打印输出[无法打印出来]

Python08--文件读取及写入操作

3,writelines方法

writelines方法和write方法的不同之处在于它是用于将行列表写入文件,格式为:writelines(lines)--lines:表示写入文件中的数据,该参数可以是一个字符或者是字符串列表。值得注意的是,如果写入文件的数据在文件中需要换行,应该显式指定换行符,现在我们使用代码来查看具体的实现效果:

if __name__ == '__main__':
    context=".r+..hei,\nThe computer grade examination is " \
            "divided into four levels. "
    with open(r"F:\novels\English\textdemo.txt",'r+',encoding="utf8") as  f:
        f.writelines(context)  # 写数据
        print(f.read())   # 读数据并打印输出[无法打印出来]

Python08--文件读取及写入操作

 以上就是文件处理的相关操作

有问题请在评论区留言。文章来源地址https://www.toymoban.com/news/detail-451783.html

到了这里,关于Python08--文件读取及写入操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python读取和写入yaml文件

    yaml是专门用来写配置文件的语言,简洁强大,远比JSON格式方便,yaml在python语言中有PyYAML安装包。 我这边应用场景是用来做接口自动化时,接口返回的值写入到yaml文件,然后需要用的时候直接引用即可。不如登录接口,我需获取接口返回的token,下一个接口访问时需要携带

    2024年02月11日
    浏览(49)
  • 【音频】python读取写入wav文件

    使用librosa库: librosa.load(文件路径,采样率sampling rate) 直接用librosa的函数 librosa.output.write_wav(\\\'output.wav\\\', y, sr) 会报错: \\\"AttributeError: module \\\'librosa\\\' has no attribute \\\'output\\\'\\\" 。 这是因为librosa库在0.8.0版本后把这个函数删掉了,我们可以用soundfile库的soundfile.write()函数达到同样的目的

    2024年02月03日
    浏览(43)
  • Python——csv文件的写入与读取

    CSV文件是一种常见的数据格式,它以逗号分隔不同的字段,每行表示一个数据记录。在Python中,我们可以使用csv模块来读取和写入CSV文件。 在Python中,我们可以使用csv模块的writer对象来写入CSV文件。下面是一个例子: 在上面的例子中,我们首先创建了要写入的数据,它是一

    2024年02月06日
    浏览(63)
  • Python读取写入数据到Excel文件

    【Linux干货教程】Ubuntu Linux 换源详细教程 大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! Hello,各位看官老爷们好,洲洲已

    2024年02月12日
    浏览(83)
  • python入门,文件的编码,读取,写入,追加

    目录 1.文件的编码 2.文件的读取 1.open()函数打开文件 2.rede()读取文件 3.readlines()方法 4.readline()方法 5.for循环读取  3.文件的关闭 withopen语法 4.文件的写入 1.write写入字符串 2.flush 5.文件的追加 计算机只认得0和1,文件的编码即一种对应方式,比如说“小红”在某一种

    2024年01月21日
    浏览(47)
  • Python 文件处理指南:打开、读取、写入、追加、创建和删除文件

    文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。 在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。 有四种不同的方法(模式)可以打开文件: \\\"r\\\" - 读取 - 默认值。打开一个文件以进行读取,如

    2024年02月05日
    浏览(71)
  • python读取txt文件内容,写入csv文件中去。

    txt文件中的内容大概是这样的: 2.在图3中,当开关断开时,R1、R2_______(串联/并联),当开关闭合时, 被短路。开关由断开转为闭合时,总电阻 ,总电流_______,通过R2的电流_______(变大/变小/不变)。 3.如图3,当开关闭合时,R2两端电压为3V,若R2=10Ω,则电流为_______。断开

    2023年04月08日
    浏览(70)
  • python如何操作excel,在excel中读取和写入数据

    Excel 是 Microsoft 为使用 Windows 和 Apple Macintosh 操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使 Excel 成为最流行的个人计算机数据处理软件。在 1993 年,作为 Microsoft Office 的组件发布了5.0版之后, Excel 就开始成为

    2024年02月03日
    浏览(61)
  • Python操作XML教程:读取、写入、修改和保存XML文档

    XML是一种常见的数据交换格式,在许多应用中都被广泛使用。通过掌握Python操作XML的基础知识,您将能够轻松地处理XML数据,从而实现数据的提取、修改和存储。 内容包括以下主要部分: 解析XML文档:学习如何使用Python解析XML文档,获取根元素和遍历子元素。 访问元素的内

    2024年02月13日
    浏览(48)
  • Node.js-fs模块文件创建、删除、重命名、文件内容的写入、读取以及文件夹的相关操作

    异步写入:writeFile() 同步写入:writeFileSync() 异步追加写入:appendFile() 同步追加写入:appendFileSync() 方式一(appendFile): 方式二(writeFile): fs.createWriteStream( path [, options ] ) 程序打开一个文件是需要消耗资源的 ,流式写入可以减少打开关闭文件的次数。 流式写入方式适用于

    2024年02月14日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包