版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章文件与文件路径操作《Python程序开发案例教程(第2版))》学习目标/Target
掌握文件的打开和关闭方式,能够通过open()函数和close()方法打开和关闭文件掌握读取文件的方式,能够通过read()、readline()和readlines()方法从文件中读取数据掌握写入文件的方式,能够通过write()、writelines()方法向文件中写入数据掌握文件定位读写的方法,能够通过tell()和seek()方法获取和设置文件读写位置学习目标/Target
掌握文件的备份和重命名操作,能够实现文件的备份和重命名操作熟悉目录的相关操作,能够在程序中熟练地创建目录、删除目录、获取目录文件列表的操作熟悉文件路径的相关操作,能够在程序中熟练获取当前路径、检测路径的有效性和拼接路径章节概述/Summary程序中使用变量保存运行时产生的临时数据,然而程序一旦运行结束,它所产生的数据也会随之消失。那么,有没有一种方法能够永久保存数据呢?答案是肯定的。在计算机中,我们可以使用文件永久保存程序运行时产生的数据。文件在计算机中的存放位置各不相同,因此在操作文件之前,我们需要了解目录、文件的路径,以便能够准确地找到文件。本章将主要介绍文件的操作,并简单介绍一些与目录、文件路径相关的操作。目录/Contents010203文件的打开和关闭从文件中读取数据向文件写入数据04文件的定位读/写目录/Contents050607文件的备份与重命名目录操作文件路径操作08实例3:用户登录文件的打开和关闭9.1
先定一个小目标!掌握文件的打开方式,能够通过open()函数打开文件9.1.1打开文件9.1.1打开文件Python内置的open()函数用于打开文件,该函数调用成功会返回一个文件对象。open(file,mode='r',buffering=None,encoding=None,errors=None,newline=None,closefd=True)语法格式file:表示接收待打开文件的名称或路径。encoding:表示文件的编码格式。mode:表示文件的打开模式,常用模式有r、w、a、b、t、+。txt_data=open('txt_file.txt','r')示例打开文件9.1.1打开文件打开文件模式的说明模式说明r以只读的方式打开文件,该模式为默认打开模式,若读取的文件不存在,则程序会报错w以只写的方式打开文件,若文件不存在,则自动创建文件a以追加的方式打开文件,若文件不存在,则自动创建文件b以二进制方式打开文件,不能单独使用,需与r、w、a模式搭配使用+以更新的方式打开文件,不能单独使用,需与r、w、a模式搭配使用9.1.1打开文件打开文件常用的文件打开模式打开模式名称描述r/rb只读模式以只读的形式打开文本文件/二进制文件,若文件不存在或无法找到,open()函数将调用失败w/wb只写模式以只写的形式打开文本文件/二进制文件,若文件已存在,则重写文件,否则创建新文件a/ab追加模式以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,若文件不存在,则创建新文件r+/rb+读取(更新)模式以读/写的形式打开文本文件/二进制文件,如果文件不存在,open()函数调用失败w+/wb+写入(更新)模式以读/写的形式创建文本文件/二进制文件,若文件已存在,则重写文件a+/ab+追加(更新)模式以读/写的形式打开文本/二进制文件,但只允许在文件末尾添加数据,若文件不存在,则创建新文件
先定一个小目标!掌握文件的关闭方式,能够通过close()函数关闭文件9.1.2关闭文件9.1.2关闭文件(1)close()方法close()方法用于关闭文件,该方法没有任何参数,直接调用即可。txt_file.close()
示例计算机中可打开的文件数量是有限的,每打开一个文件,可打开文件数量就减一;打开的文件占用系统资源,若打开的文件过多,会降低系统性能。因此,编写程序时应使用close()方法主动关闭不再使用的文件。关闭文件9.1.2关闭文件(2)with语句当打开与关闭之间的操作较多时,我们很容易遗漏文件关闭操作,导致部分数据可能会永久丢失,为此Python引入with语句预定义清理操作、实现文件的自动关闭。withopen('txt_file.txt','r')asf:print('我是with语句')示例关闭文件从文件中读取数据9.2
先定一个小目标!掌握读取文件的方式,能够通过read()、readline()和readlines()方法从文件中读取数据9.2.1读取文件1.read()方法9.2.1读取文件(1)read()方法read()方法可以从指定文件中读取指定字符数或字节数的数据。read(size=-1)语法格式参数size表示读取文件中的字符数或字节数,默认值为-1,表示读取整个文件。若读取的模式为文本模式,则表示读取的字符数;若读取的模式为二进制模式,则表示读取的字节数。file_obj=open('test_file.txt',mode='r')print(file_obj.read(5))#读取五个字符的数据print('--------------------')print(file_obj.read(8))#继续读取五个字符的数据print('--------------------')print(file_obj.read())#读取剩余的全部数据file_obj.close()读取文件的示例2.readline()方法9.2.1读取文件(2)readline()方法readline()方法用于从指定文件中读取一行数据,保留一行数据末尾的换行符\n。readline(size=-1)语法格式txt_file.txt文件的内容file_obj=open('test_file.txt',mode='r')print(file_obj.readline())#读取一行数据print('--------------------')print(file_obj.readline())#继续读取一行数据file_obj.close()读取文件的示例参数size表示读取文件中的字符数或字节数,默认值为-1,表示读取整个文件。若读取的模式为文本模式,则表示读取的字符数;若读取的模式为二进制模式,则表示读取的字节数。3.readlines()方法9.2.1读取文件txt_file.txt文件的内容(3)readlines()方法readlines()方法可以一次性读取文件中的所有数据,若读取成功返回一个列表,该列表中的一个元素对应文件中的一行数据。readlines(hint=-1)语法格式参数hint表示要读取文件中的行数,默认值为-1,表示读取整个文件数据。txt_file.txt文件的内容file_obj=open('test_file.txt',mode='r')print(file_obj.readlines())#读取全部数据file_obj.close()读取文件的示例read()和readlines()方法都可以一次读取文件中的全部数据,但因为计算机的内存是有限的,若文件较大,read()和readlines()的一次读取便会耗尽系统内存,所以这两种操作都不够安全。为了保证读取安全,通常多次调用read()方法,并每次读取指定的字节或字符个数。9.2.1读取文件读取文件
先定一个小目标!根据任务分析实现实例1:身份证归属地查询9.2.2实例1:身份证归属地查询我国的身份证号码由十七位数字本体码和一位数字校验码组成,其中前六位数字表示地址码。地址码标识编码对象常住户口所在县的行政区划代码,通过身份证号码的前六位便可以确定持有人的常住户口所在县。现有一份保存了身份证地址码的文件“身份证码值对照表.txt”,该文件的内容如图所示。9.2.2实例1:身份证归属地查询本实例要求编写程序,从“身份证码值对照表.txt”文件中读取身份证地址码,实现根据身份证地址码和身份证号码查询居民常住户口所在县的功能。使用列表保存价格信息。定义空列表用于保存用户选购商品的价格。接收输入的最大价格和最小价格。从价格列表中获取每个商品价格。判断商品价格区间。将商品价格进行排序。实现思路9.2.2实例1:身份证归属地查询在Chapter09项目中创建01_search.py文件。在01_search.py中编写代码。运行01_search.py文件。实现步骤9.2.2实例1:身份证归属地查询向文件写入数据9.3
先定一个小目标!掌握写入文件的方式,能够通过write()、writelines()方法向文件中写入数据9.3.1写入文件1.write()方法9.3.1写入文件(1)write()方法write()方法用于向指定的文件中写入数据,它需要接收一个字符串类型的参数。txt_data=open('test_file.txt',encoding='utf-8',mode='a+')print(txt_data.write('\n北宋文学家、书法家、画家。'))txt_data.close()示例write(str)语法格式参数str表示要写入文件的字符串。若数据写入成功,则会返回本次写入文件的字符数量。9.3.1写入文件1.write()方法(2)writelines()方法writelines()方法用于向文件中写入列表,列表中的每个元素必须是字符串。txt_data=open('test_file.txt',encoding='utf-8',mode='a+')txt_data.writelines(['苏轼\n','字子瞻\n','号东坡居士'])txt_data.close()示例writelines([str])语法格式参数[str]表示要写入文件的字符串列表,该列表中包含一个或多个字符串。多个字符串之间不会自动换行,只有在字符串末尾手动添加换行符才会实现换行。
先定一个小目标!9.3.2实例2:通讯录根据任务分析实现实例2:通讯录通讯录是存储联系人信息的名录。本实例要求编写通讯录程序,该程序可接收用户输入的姓名、电话、QQ号码、邮箱等信息,将这些信息保存到“通讯录.txt”文件中,实现新建联系人功能;该程序可根据用户输入的联系人姓名查找联系人,展示联系人的姓名、电话、QQ号码、邮箱等信息,实现查询联系人功能。9.3.2实例2:通讯录使用列表保存价格信息。定义空列表用于保存用户选购商品的价格。接收输入的最大价格和最小价格。从价格列表中获取每个商品价格。判断商品价格区间。将商品价格进行排序。实现思路9.3.2实例2:通讯录在Chapter09项目中创建02_address_book.py文件。在02_address_book.py中编写代码。运行02_address_book.py文件。实现步骤9.3.2实例2:通讯录文件的定位读/写9.4
先定一个小目标!掌握文件定位读/写的方法,能够通过tell()和seek()方法获取和设置文件读写位置9.4文件的定位读写文件的定位读写9.4文件的定位读/写在文件的一次打开与关闭之间进行的读写操作都是连续的,程序总是从上次读取或写入的位置继续向下进行读取或写入操作。实际上,每个文件对象都有一个读写指针,用于跟踪当前文件读写的位置。Python提供了操作读写指针的tell()和seek()方法,用于获取读写指针的位置以及修改读写指针的位置,便于用户在指定的位置读取数据或写入数据。1.tell()方法9.4文件的定位读/写(1)tell()方法tell()方法用于获取当前读写指针的位置,并返回一个表示当前位置的整数值,整数值是以字节为单位的偏移量。若值为0,则表示读写指针当前位于文件开头的位置。file=open('test_file.txt',mode='r',encoding='utf-8')print(file.tell())#获取读写指针的位置file.read(7)#读取7个字符print(file.tell())#再次获取读写指针的位置file.close()示例2.seek()方法9.4文件的定位读/写(2)seek()方法seek()方法用于将读写指针移动到指定的位置。seek(offset,whence=SEEK_SET)语法格式offset:表示偏移量。whence:用于指定文件的读写位置,该参数的取值可以为SEEK_SET或0(默认值,在开始位置读写)、SEEK_CUR或1(在当前位置读写)和SEEK_END或2(在末尾位置读写)。file=open('test_file.txt',mode='r',encoding='utf-8')#将读写指针移动到文件开头偏移15个字节的位置file.seek(15,0)print(file.read(7))#读取7个字符file.close()定位读写的示例文件的备份与重命名9.5
先定一个小目标!9.5.1文件的备份掌握文件的备份操作,能够实现文件的备份操作文件的备份9.5.1文件的备份文件的备份即创建文件的副本,此项操作可以拆解为打开文件、关闭文件与读写文件的一系列操作。以当前目录下的文件test_file.txt为例,拆解备份该文件的完整过程,具体如下。(1)打开文件test_file.txt。(2)从该文件中读取全部数据。(3)创建新文件,将数据写入到新文件中。(4)关闭文件。文件的备份9.5.1文件的备份生成文件test_file.txt的备份文件,具体代码如下所示。file_name="test_file.txt"source_file=open(file_name,'r',encoding='utf-8')#打开文件all_data=source_file.read()#从文件中读取全部数据flag=file_name.split('.')new_file_name=flag[0]+"备份"+".txt"new_file=open(new_file_name,'w',encoding='utf-8')#创建新文件new_file.write(all_data)#向新文件中写入数据source_file.close()#关闭源文件new_file.close()#关闭新文件
先定一个小目标!掌握文件的重命名操作,能够实现文件的重命名操作9.5.2文件的重命名9.5.2文件的重命名文件的重命名Python的os模块中提供了用于实现文件重命名功能的函数rename(),其语法格式如下:importosos.rename("file.txt","new_file.txt")示例rename(src,dst,*,src_dir_fd=None,dst_dir_fd=None)语法格式src:待重命名的文件名。dst:重命名后的文件名。需要注意的是,待重命名的文件必须已存在,否则程序运行会报错。值得一提的是,文件和文件夹对操作系统而言都是文件,因此rename()函数也可以用于文件夹的重命名。创建目录9.6
先定一个小目标!9.6.1创建目录熟悉目录的相关操作,能够在程序中熟练地创建目录的操作创建目录9.6.1创建目录os模块中的mkdir()函数用于在指定的路径下创建目录,若创建的目录已经存在,则会使程序运行后出现报错信息。os.mkdir(path,mode)语法格式path:表示要创建的目录。mode:表示目录的数字权限,该参数在Windows系统下可忽略。importosos.mkdir('D:\ProgramDev2\python')示例
先定一个小目标!9.6.2删除目录熟悉目录的相关操作,能够在程序中熟练地删除目录的操作1.os模块的rmdir()函数9.6.2删除目录os模块中的rmdir()函数用于删除目录,该函数的语法格式如下所示。os.rmdir(path,*,dir_fd=None)语法格式参数path表示要删除的目录。importosos.rmdir('D:\ProgramDev2\python')示例需要注意的是,使用rmdir()函数删除目录之前,必须保证待删除的目录为空,不能包含包含文件或其他目录,否则程序运行会报错。2.shutil模块的rmtree()函数9.6.2删除目录无论要删除的目录是否为空,使用shutil模块的rmtree()函数都可以删除指定目录,该函数会在删除指定的目录时一并将该目录中的文件全部删除。shutil模块中的rmtree()函数的语法格式如下。rmtree(path,ignore_errors=False,onerror=None)语法格式参数path:表示要删除的目录。ignore_errors:表示是否引发异常,若删除的文件不存在,且ignore_errors参数的值为True,则程序不会引发异常;若删除的文件不存在,且ignore_errors参数的值为False,则程序会引发异常。importosos.rmdir('D:\ProgramDev2\python')示例
先定一个小目标!9.6.3获取目录的文件列表熟悉目录的相关操作,能够在程序中熟练地获取目录文件列表的操作获取目录的文件列表os模块中的listdir()函数用于获取文件夹下文件或文件夹名的列表,该列表以字母顺序排序,其语法格式如下:listdir(path)语法格式参数path表示要获取的目录列表。importoscurrent_path=r"D:\Python项目"print(os.listdir(current_path))示例9.6.3获取目录的文件列表文件路径操作9.7
先定一个小目标!9.7.1相对路径与绝对路径熟悉文件路径的相关操作,能够在程序中判断是否是绝对路径以及规范化绝对路径相对路径和绝对路径9.7.1相对路径与绝对路径相对路径:指这个文件或目录所在的路径与其它文件或目录的路径关系,比如/home/user/file.txt;绝对路径:指盘符开始到目标文件或目录位置的路径,比如D:\Project\main.py。1.isabs()函数isabs()函数用于检测目标路径是否是绝对路径,当目标路径为绝对路径时,isabs()函数会返回True,否则返回False。下面使用isabs()函数检测路径是否为绝对路径,示例代码如下。importosprint(os.path.isabs("new_file.txt"))print(os.path.isabs("D:\Python项目\new_file.txt"))示例9.7.1相对路径与绝对路径2.abspath()函数abspath()函数用于将相对路径规范化为绝对路径,示例代码如下。importosprint(os.path.abspath("new_file.txt"))示例9.7.1相对路径与绝对路径
先定一个小目标!9.7.2获取当前路径熟悉文件路径的相关操作,能够在程序中获取当前路径获取当前路径当前路径即文件、程序或目录当前所处的路径。os模块中的getcwd()函数用于获取当前路径,该函数无需接收任何参数,会返回文件、程序或目录当前所处的路径。例如,获取程序当前所处的路径,具体代码如下。importoscurrent_path=os.getcwd()print(current_path)示例9.7.2获取当前路径
先定一个小目标!9.7.3检测路径的有效性熟悉文件路径的相关操作,能够在程序中检测路径有效性检测路径的有效性假设当前需要设计一个用于判断目录是否存在的功能:如果目录不存在,执行创建目录操作,同时在该目录下创建一个“dir_demo.txt”文件并写入数据;如果目录存在,提示用户“该目录已存在”。importosdir_path=input('请输入目录的名称:')yes_or_no=os.path.exists(dir_path)#检测目录是否存在ifyes_or_noisFalse:#目录不存在os.mkdir(dir_path)#创建相应的目录new_file=open(os.getcwd()+'\\'+dir_path+"\\"+"dir_demo.txt",'w',encoding='utf-8')new_file.write("itcast")print("写入成功")new_file.close()else:#目录存在print("该目录已存在")示例9.7.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025高考化学高三化学大二轮专项专题小题各个击破 题型1 化学与传统文化STSE
- 新疆喀什地区巴楚县2024届九年级上学期期末考试英语试卷(含答案无听力原文及含音频)
- 湖北省省直辖县级行政单位潜江市13校联考2024-2025学年九年级上学期12月月考语文试题(无答案)
- 第九章 机械和功 综合素质评价卷(含答案)2024-2025学年北师大八年级物理下册
- 八年级生物第四章第一节细菌和真菌的分布课件人教版
- 财务管理案例分析(雀巢并购徐福记)教学教材
- 《模拟电路分析与实践》对口单招课程试卷7答案
- 高一 人教A版 数学 必修一 第五章《三角函数的应用(2)》课件
- 广东省汕头市2023-2024学年高三上学期语文期末调研测试试卷
- 山东省青岛市李沧区2023-2024学年三年级上学期语文期末考试试卷
- 小学四年级数学竞赛试卷(含答案)
- 矿产地质堪查服务项目评估分析报告
- 2023年山东高中学业水平合格考信息技术试卷试题(答案详解)
- 医师定期考核医师调离申请表
- 风险分级管控与隐患排查治理双重预防机制建设实施方案
- 数学思想与方法期末考试范围答案全
- 道路客运站服务管理规范课件
- 初中地理情境教学课件
- 政治经济学智慧树知到课后章节答案2023年下宁波大学
- 抗肿瘤药物医嘱评价表
- 博士论文的写作
评论
0/150
提交评论