内容正文:
课程名称
第12章 文件
计划学时
4学时
内容分析
本章主要介绍文件概述、文件操作、目录操作、小案例
教学目标
与
教学要求
要求学生理解文件的概念、掌握文件的操作、掌握目录的操作
教学重点
文件操作、目录操作
教学难点
文件操作、目录操作
教学方式
课堂讲解及ppt演示
教
学
过
程
第一课时
(文件概述、文件操作)
文件概述
相信大家对文件并不陌生,它可以存储文字、图片、音乐、视频等,如图12.1所示。总之,文件是数据的集合,可以有不同的类型。
图12.1 各种不同类型的文件
按数据的组织形式,文件大致可以分为两类,具体如下所示:
1. 文本文件
文本文件是一种由若干字符构成的文件,可以用文本编辑器进行阅读或编辑。以txt、py、html等为后缀的文件都是文本文件。
2. 二进制文件
二进制文件一般是指不能用文本编辑器阅读或编辑的文件。以mp3、mp4、png等为后缀的文件都是二进制文件,如果想要打开或修改这些文件,必须通过特定软件进行,比如用Photoshop软件可以编辑图像文件。
从本质上讲,文本文件也是二进制文件,因为计算机处理的全是二进制数据。
文件操作
通过程序操作文件与手动操作文件类似,通常需要经过三个步骤:打开文件、读或写数据、关闭文件。
· 打开文件
对文件所有的操作都是在打开文件之后进行的,打开文件使用open()函数来实现,其语法格式如下:
open(file[, mode = 'r' [,...]])
该函数返回一个文件对象,通过它可以对文件进行各种操作,参数列表中参数的说明如表12.1所示。
表12.1 open()函数的各参数说明
参数
说明
file
被打开的文件名
mode
文件打开模式,默认是只读模式
例如打开文件名为test.txt文件,具体示例如下:
f1 = open('test.txt') # 打开当前目录下的test.txt文件
f2 = open('../test.txt') # 打开上级目录下的test.txt文件
f3 = open('D:/1000phone/test.txt') # 打开D:/1000phone目录下的test.txt文件
示例中使用open()函数打开文件时使用只读模式打开,此时必须保证文件是存在的,否则会报文件不存在的错误。
Python中打开文件的模式有多种,具体如表12.2所示。
表12.2 文件打开模式
mode
权限
读/写格式
删除原内容
文件不存在
文件指针初始位置
读
写
追加
'r'
√
文本
产生异常
文件开头
'r+'
√
√
文本
产生异常
文件开头
'rb+'
√
√
二进制
产生异常
文件开头
'w '
√
文本
√
新建文件
文件开头
'w+'
√
√
文本
√
新建文件
文件开头
'wb+'
√
√
二进制
√
新建文件
文件开头
'a'
√
文本
新建文件
文件末尾
'a+'
√
√
√
文本
新建文件
文件末尾
'ab+'
√
√
√
二进制
新建文件
文件末尾
在表12.2中,'r'表示从文件中读取数据,'w'表示往文件中写入数据,'a'表示往文件中追加数据,'+'可以与以上三种模式('r'、'w'、'a')配合使用,表示同时允许读和写。另外,当需要处理二进制文件时,则需要提供'b'给mode参数,例如'rb'用于读取二进制文件。
· 关闭文件
当对文件内容操作完以后,一定要关闭文件,这样才能保证所修改的数据保存到文件中,同时也可以释放内存资源供其他程序使用。关闭文件的语法格式如下:
文件对象名.close()
此处需注意,即使使用了close()方法,也无法保证文件一定能够正常关闭。例如,在打开文件之后和关闭文件之前发生了错误导致程序崩溃,这时文件就无法正常关闭。因此,在管理文件对象时推荐使用with关键字,可以有效地避免这个问题,具体示例如下:
with open('test.txt', 'r+') as f:
# 通过文件对象f进行读写操作
使用with-as语句后,就不需要再显式使用close()方法。另外with-as语句还可以打开多个文件,具体示例如下:
with open('test1.txt', 'r+') as f1, open('test2.txt', 'a+') as f2:
# 通过文件对象f1、f2分别操作test1.txt、test2.txt文件
从上述示例中可看出,with-as语句极大地简化了文件打开与关闭