第12章 文件

12.1 文件概述

相信大家对文件并不陌生,它可以存储文字、图片、音乐、视频等,如图所示。总之,文件是数据的集合,可以有不同的类型。
在这里插入图片描述
按数据的组织形式,文件大致可以分为如下两类。

  1. 文本文件
    文本文件是一种由若干字符构成的文件,可以用文本编辑器进行阅读或编辑。以txt、py、html等为后缀的文件都是文本文件。
  2. 二进制文件
    二进制文件一般是指不能用文本编辑器阅读或编辑的文件。以mp3、mp4、png等为后缀的文件都是二进制文件,如果想要打开或修改这些文件,必须通过特定软件进行,比如用Photoshop软件可以编辑图像文件。
    从本质上讲,文本文件也是二进制文件,因为计算机处理的全是二进制数据。

12.2 文件操作

通过程序操作文件与手动操作文件类似,通常需要经过3个步骤:打开文件、读或写数据、关闭文件。

12.2.1 打开文件

对文件所有的操作都是在打开文件之后进行的,打开文件使用open()函数来实现,其语法格式如下:
在这里插入图片描述
该函数返回一个文件对象,通过它可以对文件进行各种操作,参数列表中参数的说明如表所示。
在这里插入图片描述
例如打开文件名为test.txt文件,具体示例如下:
在这里插入图片描述
示例中使用open()函数打开文件时使用只读模式打开,此时必须保证文件是存在的,否则会报文件不存在的错误。
Python中打开文件的模式有多种,具体如表所示。
在这里插入图片描述
在表中,'r’表示从文件中读取数据,'w‘表示向文件中写入数据,'a‘表示向文件中追加数据,'+’可以与以上3种模式(‘r’、‘w’、‘a’)配合使用,表示同时允许读和写。另外,当需要处理二进制文件时,则需要提供’b’给mode参数,例如’rb’用于读取二进制文件。

12.2.2 关闭文件

当对文件内容操作完以后,一定要关闭文件,这样才能保证所修改的数据保存到文件中,同时也可以释放内存资源供其他程序使用。关闭文件的语法格式如下:
在这里插入图片描述
接下来演示文件的打开与关闭,如例所示。
在这里插入图片描述
此处需注意,即使使用了close()方法,也无法保证文件一定能够正常关闭。例如,在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。因此,在管理文件对象时推荐使用with关键字,可以有效地避免这个问题,具体示例如下:
在这里插入图片描述
使用with-as语句后,就不需要再显式使用close()方法。另外with-as语句还可以打开多个文件,具体示例如下:
在这里插入图片描述
从上述示例中可看出,with-as语句极大地简化了文件打开与关闭操作,这对保持代码的优雅性有极大的帮助。

12.2.3 读文本文件

打开文件成功后将返回一个文本对象,对文件内容的读取可以通过该对象来实现,该对象有3种方法可以获取文件内容,具体如下所示:

  1. read()方法
    read()方法可以从文件中读取内容,其语法格式如下:
    在这里插入图片描述
    该方法表示从文件中读取size个字节或字符作为结果返回,如果省略size,则表示读取所有内容。
  2. readlines()方法
    readlines()方法可以读取文件中的所有行,其语法格式如下:
    在这里插入图片描述
    该方法将文件中的每行内容作为一个字符串存入列表中并返回该列表。
    此处需注意,readlines()方法一次性读取文件中的所有行,如果文件非常大,使用readlines()方法就会占用大量的内存空间,读取的过程也较长,因此不建议对大文件使用该方法。
  3. readline()方法
    readline()方法可以逐行读取文件的内容,其语法格式如下:
    在这里插入图片描述
    该方法将从文件中读取一行内容作为结果返回。
  4. in关键字
    除了上述几种方法外,还可以通过in关键字读取文件,如例所示。
    在这里插入图片描述

12.2.4 写文本文件

文件中写入内容也是通过文件对象来完成,可以使用write()方法或writelines()方法来实现。

  1. write()方法
    write()方法可以实现向文件中写入内容,其语法格式如下:
    在这里插入图片描述
    该方法表示将字符串s写入文件中。
  2. writelines()方法
    writelines()方法向文件中写入字符串列表,其语法格式如下:
    在这里插入图片描述
    该方法将列表s中的每个字符串元素写入文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值