1、项目六项目六 文件操作文件操作主讲人:主讲人:X X老师老师 通过前面的学习,我们已经掌握了一定的编程能力,接下来我们学习文件的操作。代码君在学校里时常要处理一大堆的文件,由于文件的种类不同,因此要使用不同的文件操作软件,这让代码君起了偷懒的念头,因此他开始学习使用Python语言进行对不同种类文件的操作。目录任务一任务一学生信息文件读写操作任务二任务二批量修改文件名1任务一:学生信息文件读写操作6.1.1 文件概述6.1.2 文件打开操作6.1.3 文件关闭操作6.1.4 文件读操作6.1.5 文件写操作6.1.6 文件指针操作6.1.7 任务实现一、文件概述一、文件概述1、什么是文件文件是
2、存储在存储器上的数据集合,这里的存储器一般是指磁盘、光盘、磁带等。文件是存储在存储器上的数据集合,这里的存储器一般是指磁盘、光盘、磁带等。文件的基本单位是字节,文件所含的字节数就是文件的长度,而文件所含的字节是从文件的开头到文件的结束,每个字节有一个默认的位置,位置从0开始。一、文件概述一、文件概述2、文件的分类(1)文本文件(2)二进制文件文本文件也称为ASCII文件,是一种计算机文件,以ASCII码方式存储的文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件,可以通过字处理软件进行创建、编辑和修改。二进制文件是由0和1组成的字节流,它和文本文件最主要的区别是没有统一的字符编码,通
3、常也无法直接被人阅读和理解,比如图像文件、音频文件、视频文件、可执行文件、数据库文件等都属于二进制文件。二、文件打开操作二、文件打开操作1、文件打开格式open()函数是我们常用的打开指定文件的方法,其语法格式如下:其中(1)文件说明符可以包含盘符、路径和文件名,它是一个字符串,用于表达文件路径。(2)打开模式指定打开文件后的操作方式,该参数是字符串,必须小写。(3)整型参数buffering是可选参数,用于指定访问文件所采用的缓冲方式。(4)如果buffering=0,表示冲;如果buffering=1,表示只缓冲一行,表示给定值作为缓冲区大小。文件对象=open(文件说明符,访问模式,bu
4、ffering)二、文件打开操作二、文件打开操作可取值可取值含义含义r以只读模式打开,如果文件不存在,将出现错误提示w以只写方式打开,如果文件不存在,则会创建新的文件;文件若存在则会清空文件a以追加的模式打开,从文件末尾开始,必要时创建新文件r+以读写模式打开w+以读写模式打开a+以追加的读写模式打开rb以二进制读模式打开wb以二进制写模式打开ab以二进制追加模式打开rb+/wb+/ab+以二进制读写模式打开表为访问模式参数的可取值访问模式参数的可取值二、文件打开操作二、文件打开操作2、文件的路径格式(1)相对路径提供相对文件路径让 Python 到指定位置查找文件,而该位置是相对于当前运行的
5、程序所在的目录而言的,即相对文件路径。具体操作如下:二、文件打开操作二、文件打开操作(2)绝对路径需要提供完整准确的储存位置(即绝对文件路径)给程序,不需要考虑当前运行程序储存在什么位置。具体操作如下:二、文件打开操作二、文件打开操作可以采用双反斜杠()的方式表示路轻,此时不需要声明字符串,具体操作如下:该方法也不需要声明字符串,在Linux及Windows操作系统下均可使用,具体操作如下所示:三、文件关闭操作三、文件关闭操作进行完文件读写的操作后,就应当调用close()方法关闭文件。file=open(文件名,访问模式,buffering)对文件file进行读写操作file.close()
6、语法格式如下:文件关闭操作,使用close()方法关闭打开的Python_study.txt文件具体操作如下所示:四、文件读操作四、文件读操作1、read()方法使用read()读取文件的语法格式如下:str=file.read(size)文件读操作,顾名思义就是将文件的内容读取出来,同时也就是我们上面说提到的把东西拿出来的那只“手”。四、文件读操作四、文件读操作 其中file是我们需要读取的文件对象,size是可选参数,我们可以自行指定要读取的字节数,如果不指定,将会读取所有内容。结合我们上面创建的Python_study.txt文件,我们来对它进行读操作,具体操作如下所示:输出的结果为:四
7、、文件读操作四、文件读操作2、readlines(size)readlines(size)方法可用于读取文件中所有的行,它返回结果是一个列表,如果指定参数,则返回总和大约为size字节的行,实际读取值可能比size大些,因为需要填充缓冲区,语法格式如下:list=file.readlines()其中,file是读取的文件对象,读取出来的内容会返回到一个列表中。四、文件读操作四、文件读操作3、readline()readline()方法用于从文件读取整行,包括“n”字符,如果指定了一个非负数的参数,则返回该行指定大小的字节数,包括“n”字符。现在,我们来对上面创建的Python_study.tx
8、t文件进行小小的变动,将每一句进行换行处理,变动如下图所示:四、文件读操作四、文件读操作用用inin关键字读取文件关键字读取文件使用in关键字可以遍历文件中所有的行。for line in 文件对象:处理行数据line使用的语法格式如下:四、文件读操作四、文件读操作使用in关键字读取Python_study.txt文件中的内容,具体操作如下所示:输出结果为:四、文件读操作四、文件读操作用用tryfinallytryfinally读取文件读取文件 在文件读取的过程中,一旦程序抛出IOError错误,后面的close函数将不会被调用。所以,在程序运行过程中,无论是否出错,都要确保能正常关闭文件,可
9、以使用try.finally.结构实现,如下所示:四、文件读操作四、文件读操作用用withwith读取文件读取文件 上面的代码虽然运行良好,但是每次都这样写会显得繁琐,所以Python提供了更加优雅简短的语法。使用with语句可以很好地处理上下文环境产生的异常,会自动调用close函数,如下所示:这种with语句的使用效果与上文的try.finally.结构的使用效果是一样的,但代码更为简洁,且不必调用close函数。五、文件写操作五、文件写操作1、write()方法 其实写文件和读文件是一样的,唯一的区别就是调用open()函数时,传入的标识符由原来的“r”读模式转变成了“w”或“wb”等表
10、示写文本文件或写二进制文件的模式了。改变读写模式的同时,使用write()方法可以向文件中写入内容,其语法格式如下:file.write(str)其中file是写入数据的文件对象。五、文件写操作五、文件写操作2、writelines()方法 使用writelines()方法写入文件的时候,换行符不会自动加入,因此,需要我们手动加入换行符。其书写的语法格式如下:file.writelines(seq)file是写入的内容的文件对象,参数seq是返回字符串的序列(列表、元组、集合、字典等)。五、文件写操作五、文件写操作3、追加写入 以w为参数调用open()方法时,如果写入文件但是又不希望文件里面
11、原来的内容被覆盖的时候,这时候我们就可以使用追加写入数据的方式,以a或a+为参数调用open()方法打开这个文件。给下面学生名单中追加写入 Lucy。具体操作如下:五、文件写操作五、文件写操作将Lucy追加写入后,我们再来读一次文件,检验是否追加成功。输出结果为:六、文件指针操作六、文件指针操作什么是文件指针什么是文件指针 文件指针是指向一个文件的指针变量,用于标识当前读写文件的位置,通过文件指针就可以对它所指的文件进行各种操作。tell()方法:获取文件指针的位置seek()方法:移动文件指针语法格式如下:pos=file.tell()语法格式如下:file.seek(offset,when
12、ce)七、任务实现七、任务实现【任务实现】现在有一张学生信息表,我们要将表中的学生信息存储进一个文件中,并在将信息存储进去后打开、读取文件,将里面的学生信息打印输出,并在操作结束后关闭文件。学号学号姓名姓名性别性别家庭住址家庭住址1张三男北京2李四男南京3小东男上海4小西女武汉5小南男合肥6小北女长沙2任务二:批量修改文件名6.2.1 认识os模块6.2.2 文件和目录操作6.2.3 path模块6.2.4 任务实现一、认识一、认识 os 模块模块什么是os模块 os 模块是Python标准库中的一个用于访问操作系统的模块,包含普遍的操作系统功能,如复制、创建、修改、删除文件及文件夹。要使用这
13、个模块,需要先导入它,然后调用相关的方法。一、认识一、认识 os 模块模块 在Python中,import是我们用来导入模块的关键字,想要使用os模块里的函数之前,我们先要用下面这行代码将os模块导入进来。import os 如果我们要使用模块中的某一函数的社会化,我们就必须要以下面这种方法引用:模块名.函数名二、文件和目录操作二、文件和目录操作 系统操作实际上就是对目录进行删除、修改、查询目录当前路径等操作,为了使代码编写起来更加方便,下面的程序我们都将在Python Console或IDLE下操作运行。os.name()格式:os.name()作用:判断现在正在实用的平台,Windows
14、返回nt;Linux 返回posix具体操作如下所示:二、文件和目录操作二、文件和目录操作os.getcwd()os.listdir()格式:os.getcwd()作用:返回当前工作目录。格式:os.listdir(path)作用:返回path指定的文件夹包含的文件或文件夹的名字的列表。具体操作如下所示:二、文件和目录操作二、文件和目录操作os.mkdir()格式:os.mkdir(path,mode)作用:以数字mode的mode创建一个名为path的文件夹,默认的mode是0777(八进制)。以在D:/python_study路径下创建一个test文件夹,具体操作如下所示:二、文件和目录操
15、作二、文件和目录操作os.chdir()格式:os.chdir(path)作用:改变当前工作目录到指定路径,os.rmdir()格式:os.rmdir(path)作用:删除path指定的空目录,如果目录非空,则抛出一个OSError异常,具体操作如下所示:二、文件和目录操作二、文件和目录操作os.listdir()格式:os.listdir(path)作用:获取指定的目录列表。rename:文件重命名格式:rename(“当期文件名”,“新文件名”)作用:rename()方法可以实现文件重命名。二、文件和目录操作二、文件和目录操作remove():删除文件格式:os.remove(“文件名”)
16、作用:remove()方法可以删除文件。具体操作如下所示:三、三、path 模块模块 path模块是os模块中的一种,我们可以通过调用path模块中的方法对文件、目录有更加全面的操作。下面我们将对path模块中经常会用到的方法进行实际操作。1、os.path.abspath(path)作用:返回path的绝对路径绝对路径:“D:Learnpythonday15”;相对路径:“.pythonday5”具体操作如下所示:三、三、path 模块模块2、os.path.split(path)作用:将路径分解为(文件夹,文件名),返回的是元组类型。具体操作如下所示:三、三、path 模块模块3、os.p
17、ath.join(path1,path2,)作用:将path进行组合,若其中有绝对路径,则之前的path将会被删除。具体操作如下所示:三、三、path 模块模块4、os.path.dirname(path)作用:返回文件路径。具体操作如下所示:三、三、path 模块模块5、os.path.basename(path)作用:返回path中的文件名。具体操作如下所示:三、三、path 模块模块6、os.path.getsize(path)作用:获取文件的大小,若是文件夹则返回0。具体操作如下所示:三、三、path 模块模块7、os.path.exists(path)作用:判断文件是否存在,若存在返回True,否则返回False。具体操作如下所示:三、三、path 模块模块8、os.path.isdir(path)作用:判断该路径是否为目录。具体操作如下所示:三、三、path 模块模块9、os.path.isfile(path)作用:判断该路径是否为文件。具体操作如下所示:四、任务实现四、任务实现【任务实现】编写一批修改文件名的小程序代码。【任务解析】通过设置funFlag,用于判断是统一添加标志还是统一删除标志,导入os模块下的listdir函数获取当前文件路径,用for循环遍历当前文件夹下的文件,获取文件名称,最后通过rename修改文件名从而实现任务。