版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作文件并处理异常
操作本地文件目录Content1为Python程序添加异常处理操作2项目导言零
计算机文件通常是以数字形式存储在计算机硬盘等存储介质上,并由操作系统进行管理和访问。而异常处理则是编程语言中的一种机制,通过捕获、处理和反馈程序运行时出现的异常情况,保证程序的正确性、稳定性和可靠性。异常处理可以增强程序的健壮性,使其能够应对各种可能出现的异常情况,避免因意外错误导致程序崩溃或数据损失等问题。本项目主要完成文件的操作以及程序中异常处理功能的添加。学习目标零知识目标了解文件的常用操作;熟悉os模块功能;熟悉异常处理的作用;掌握异常处理流程。能力目标具备在程序中操作文件的能力;具备使用os模块的能力;具备实现异常处理的能力。素养目标具有事业心和责任心;具有较强的劳动组织能力、集体意识和社会责任心;具有艰苦奋斗的精神和务实作风。任务5-1:操作本地文件壹1文件操作
在编程中,文件也是一个非常重要的概念,可以使用编程语言提供的文件I/O操作来读取和写入文件。通过文件I/O操作,程序能够读取、修改、删除或创建文件,并将文件的内容作为程序输入或输出。目前,Python提供了多个用于实现文件I/O操作的内置函数,常用函数见表。函数描述open()打开文件write()写入文件内容writelines()写入多个内容read()读取文件内容readline()按行读取readlines()读取文件内容close()关闭文件任务5-1:操作本地文件壹(1)open()
在Python中,open()是一个内置函数,用于打开文件,创建并返回一个对应的文件对象,可以对该文件对象进行读写操作,语法格式如下所示。file=open(file_name[,access_mode][,buffering])参数说明见表。参数描述file_name表示要打开的文件名或文件路径access_mode文件打开的模式,可选值有:r:默认模式,以只读方式打开文件w:以写入方式打开文件,如果文件已经存在,则覆盖原文件a:以追加方式打开文件,在原文件基础上继续进行写入操作x:以独占方式创建文件,如果文件已经存在就会报错b:二进制模式,可与其他模式配合使用,如“rb”、“wb”t:文本模式,与其他模式一起使用,用于操作文本文件,如:“rt”+:读写模式buffering缓冲策略,可选值有:-1:使用系统默认的缓冲大小0:不做缓冲,直接写入到硬盘1:行缓冲n(n>1):指定缓冲区的大小任务5-1:操作本地文件壹
需要注意的是,在使用open()函数打开一个文件时,如果文件不存在,则会抛出FileNotFoundError异常。因此,在打开文件之前要确保该文件存在,或者使用try...except结构来处理异常。例如,使用open()函数打开一个名为example.txt的文件并设置只读模式,代码如下。file=open('example.txt','r')(2)write()Python的write()方法用于向一个文件中写入指定的字符串或字节序列,该方法是文件对象的一个方法,需要通过打开文件并获取文件对象后才能使用,语法格式如下所示。file.write(string)其中,file表示要写入的文件对象;string是要写入文件的内容,可以是字符串或二进制数据,如果写入失败,会抛出异常。任务5-1:操作本地文件壹例如,使用write()方法将字符串“Hello,World!”写入名为example.txt的文件中,代码如下。file=open('example.txt','w')file.write("Hello,World!")file=open('example.txt','w')file.write("Hello,")file.write("World!")另外,如果要将多个字符串或字节序列写入同一个文件,则可以连续调用多次write()方法。例如,将字符串“Hello,”和“World!”分别写入文件中,代码如下。任务5-1:操作本地文件壹(3)writelines()file.writelines(iterable)#打开文件file=open("example.txt","w")#向文件中写入多行数据lines=["Hello\n","World\n"]file.writelines(lines)需要注意的是,writelines()方法同样不会自动添加换行符,每个字符串都会被紧密地写入文件中,因此在每个字符串末尾添加换行符时需要手动添加。例如,使用writelines()函数将字符串列表“["Hello\n","World\n"]”写入名为example.txt的文件中,代码如下。相比与write()函数,writelines()函数同样用于实现内容的写入,但该函数用于将一个字符串列表或迭代器中的所有字符串写入文件中,语法格式如下所示。任务5-1:操作本地文件壹(4)read()file.read(size)其中,size是要读取的字节数或字符数,当size大于文件中剩余内容长度时,则read()方法会一次性读取所有剩余内容并返回;当省略该参数,则将读取整个文件;当指定了size参数,则read()函数会读取指定大小的内容并返回,若无法读取指定大小的内容则返回实际读取到的内容。在Python中,read()同样是一个文件对象的函数,用于从文件中读取指定字节数或字符数的数据,该方法只能用于打开文件的读取模式(即r模式或a+模式),语法格式如下所示。任务5-1:操作本地文件壹#打开文件file=open("example.txt","r")#读取文件中的数据data=file.read()#输出读取到的数据print(data)另外,每次调用read()方法时,都会从上一次读取的位置开始读取数据;如果多次调用read()方法,每次读取的数据都会累加到缓冲区中,因此需要注意数据是否会超出内存限制。例如,使用read()函数读取名为example.txt的文件的整个内容,代码如下。任务5-1:操作本地文件壹file.readline(size)(5)readline()和readlines()readline()和readlines()函数同样用于从文件中读取内容。其中,readline()函数用于从文本文件中读取一行数据(包括行末换行符“\n”),语法格式如下所示。size表示要读取的字节数或字符数,通常不需要指定,默认读取一整行数据。例如,使用readline()函数逐行读取名为example.txt的文件并打印每一行内容,代码如下。file=open('example.txt','r')line=file.readline()whileline:print(line)line=file.readline()任务5-1:操作本地文件壹file.readlines(sizehint)而readlines()函数则用于从文本文件中一次性读取所有行数据,并返回一个包含所有行数据的列表,语法格式如下所示。sizehint是可选参数,表示要读取的最大字节数或字符数,如果不指定sizehint或者sizehint小于等于0,则读取文件中所有的数据。例如,使用readlines()函数从example.txt文件中读取多行数据,代码如下。#打开文件file=open("example.txt","r")#读取文件中的数据并保存到列表中lines=file.readlines()#输出读取到的数据forlineinlines:print(line)任务5-1:操作本地文件壹file.close()(6)close()Python的close()方法用于关闭打开的文件。该方法应该在完成对文件的读取或写入操作后调用,以确保释放文件资源并将其保存到磁盘上。并在关闭文件之后,就不能再对其进行读写操作,语法格式如下所示。file=open('example.txt','r')#在这里进行文件读取或写入操作file.close()例如,使用close()函数关闭名为example.txt的文件,代码如下。需要注意的是,在使用文件对象进行读写操作后,一定要记得及时关闭文件以释放相应的系统资源,否则会导致资源的浪费和泄露,并且,如果未正确关闭文件,可能会导致文件损坏或数据丢失。特别是在处理大文件时,因为文件对象会占用系统资源,如果不及时释放可能会导致系统的性能下降。任务5-1:操作本地文件壹#使用with语句打开文件并处理数据withopen("example.txt")asfile:#读取文件中的数据并输出到控制台data=file.read()print(data)另外,在Python实际编程过程中,除了使用close()方法关闭文件之外,还可以使用with语句来打开文件并处理文件中的数据,这样可以自动调用close()方法来关闭文件,同时还可以更加简洁和安全地处理文件对象。例如,使用with语句打开名为example.txt的文件并处理数据,代码如下。任务5-1:操作本地文件壹2os模块
Python的os模块是一个提供了与操作系统交互的接口的标准库。通过os模块,可以实现对文件和目录的创建、删除、移动、重命名等操作,以及获取和修改当前工作目录、环境变量等一系列与操作系统相关的功能。文件和目录操作函数提供了与文件和目录相关的方法,如创建、删除、重命名、移动、获取属性等,常用函数见表。函数描述os.getcwd()获取当前工作目录os.listdir(path)列出指定路径下的所有文件和目录,其中:path:文件或目录路径os.access(path,mode)验证权限,其中:path:文件或目录路径mode:检验内容,返回值为True或Falseos.chmod(path,flags)更改权限,其中:path:文件或目录路径flags:设置的权限os.mkdir(path,mode=0o777,dir_fd=None)创建指定路径的目录,其中:path:文件或目录路径mode:指定新建目录的权限,默认为0o777(即所有用户都有读、写和执行权限)dir_fd:指定父目录的文件描述符,若提供,则将在该指定的目录下创建子目录os.makedirs(name,mode=0o777,exist_ok=False)递归地创建一个或多个新的目录。与mkdir()函数不同的是,该函数会依次创建各级父目录,如果已存在则跳过。其中:name:要创建的目录路径mode:新建目录的权限,默认为0o777(即所有用户都有读、写和执行权限)exist_ok:如果目标目录已经存在,则是否允许忽略,默认为False任务5-1:操作本地文件壹函数描述os.open(file,mode,flags)打开文件,其中:file:文件的路径mode:打开方式flags:可选参数,用于设置权限os.read(fd,n)读取内容,其中:fd:文件被打开时生成的文件对象n:读取的字节数os.close(fd)关闭文件,其中:fd:文件被打开时生成的文件对象os.remove(path,dir_fd=None)删除指定的文件,其中:path:要删除的文件路径dir_fd:指定父目录的文件描述符,若提供,则将在该指定的目录下查找和删除文件os.rmdir(path,dir_fd=None)删除指定的目录。注意,要求目录为空。其中:path:要删除的目录路径dir_fd:指定父目录的文件描述符,若提供,则将在该指定的目录下查找和删除目录。os.removedirs(path)递归地删除指定目录及其所有子目录。与rmdir()函数不同的是,该函数会依次删除各级子目录,如果目录非空则抛出异常。其中:path:要删除的目录路径,可以是绝对路径或相对路径os.rename(src,dst,src_dir_fd=None,dst_dir_fd=None)将文件或目录从源路径重命名为目标路径,其中:src:要重命名的源文件路径或目录路径dst:新的文件名或目录名src_dir_fd:指定源目录的文件描述符,可选。若提供,则将在该指定的目录下查找并重命名源文件或目录dst_dir_fd:指定目标目录的文件描述符,可选。若提供,则将在该指定的目录下重命名文件或目录os.path.exists(path)检查指定的路径是否存在,如果指定的路径存在,则返回True;否则,返回False。其中:path:要检查的文件或目录路径os.path.isfile(path)检查指定的路径是否为文件,其中:path:要检查的文件或目录路径os.path.isdir(path)检查指定的路径是否为目录,其中:path:要检查的文件或目录路径os.path.join(path,*paths)将多个路径字符串拼接成一个完整的路径。该函数会根据操作系统自动添加路径分隔符。其中:path:第一个路径字符串*paths:零个或多个路径字符串os.path.abspath(path)获取指定路径的绝对路径,其中:path:要获取绝对路径的路径字符串os.path.basename(path)获取指定路径中的文件名部分,其中:path:要获取基本文件名的路径字符串os.path.dirname(path)获取指定路径中的目录部分,其中:path:要获取父目录路径的路径字符串任务5-1:操作本地文件壹其中,当mode参数表示打开方式时,可选参数值见表。参数值描述os.O_RDONLY只读模式os.O_WRONLY写入模式os.O_RDWR读写模式os.O_CREAT如果文件不存在则新建文件os.O_EXCL独占创建模式os.O_TRUNC若文件已存在,则清空文件内容os.O_APPEND追加模式而flags用于权限的设置,可选参数值见表。参数值描述stat.S_IXOTH其他用户有执行权stat.S_IWOTH其他用户有写权限stat.S_IROTH其他用户有读权限stat.S_IRWXO其他用户有全部权限stat.S_IXGRP组用户有执行权限stat.S_IWGRP组用户有写权限stat.S_IRGRP组用户有读权限stat.S_IRWXG组用户有全部权限stat.S_IXUSR拥有者具有执行权限stat.S_IWUSR拥有者具有写权限stat.S_IRUSR拥有者具有读权限stat.S_IRWXU拥有者有全部权限stat.S_ISVTX拥有者删除权限任务5-2为Python程序添加异常处理操作贰1认识异常在Python中,异常分为内置异常和自定义异常。内置异常是由解释器或运行时库引发的异常,常见内置异常见表。异常描述BaseException所有异常的基类Exception所有非系统退出或者中断的异常的基类ArithmeticError数学运算错误的基类,包括除数为零、无穷大等情况SystemExit当Python解释器接收到sys.exit()调用时引发此异常KeyboardInterrupt用户取消程序执行时引发的异常SyntaxError语法错误时引发的异常StopIteration迭代器没有更多的元素时引发的异常AssertionError断言失败时引发的异常NameError尝试访问一个不存在的变量或函数时引发的异常TypeError操作或函数应用于不适当类型的对象时引发的异常ValueError传递给函数的参数类型正确但值不合适时引发的异常IOError输入输出操作引发的异常,例如打开文件、读写文件等IndexError索引超出序列范围时引发的异常任务5-2为Python程序添加异常处理操作贰异常描述KeyError在映射中查找一个不存在的键时引发的异常FileNotFoundError文件不存在时引发的异常AttributeError访问对象没有的属性时引发的异常ZeroDivisionError除数为零时引发的异常IndentationError缩进错误时引发的异常MemoryError内存耗尽时引发的异常任务5-2为Python程序添加异常处理操作贰而自定义异常则是开发人员根据具体业务需要自定义的异常类型,通常继承自Exception类或其子类,语法格式如下所示。classCustomError(Exception):pass例如,定义一个名为MyException的自定义异常类,它继承了标准异常类Exception。之后重写__init__()方法以添加自定义的message属性。最后使用raise语句抛出这个异常,并在except块中捕获并处理该异常,代码如下。#自定义一个继承自Exception的异常类classMyException(Exception):def__init__(self,message):self.message=messagetry:raiseMyException("这是我的异常")exceptMyExceptionase:print(e.message)任务5-2为Python程序添加异常处理操作贰2异常处理1、try...except语句try...except是Python中用于异常处理的重要机制,可以捕获可能出现的异常并执行相应的操作,从而保证程序的稳定性和可靠性。其中,try代码块中包含可能会抛出异常的代码,而except代码块则包含针对特定异常类型进行处理的代码,try...except语句处理异常流程如图所示。任务5-2为Python程序添加异常处理操作贰语法格式如下所示。try:#可能会发生异常的代码块except异常类型1:#处理异常类型1的代码块except异常类型2:#处理异常类型2的代码块...其中,try代码块中放置可能会出现异常的代码,如果异常被抛出,则该块中余下的代码将被跳过。然后,如果异常类型与第一个except匹配,就会执行第一个except代码块中的代码;如果不匹配,则异常会传递到下一个except代码块中。如果异常没有被任何一个except代码块处理,则会传递到上一级try代码块(如果有)或最终传递到程序外部并导致程序崩溃。任务5-2为Python程序添加异常处理操作贰例如,使用try...except语句捕获除法计算时可能出现的ValueError和ZeroDivisionError异常,代码如下。try:x=int(input("请输入一个数:"))y=10/xexceptValueError:print("无效的输入")exceptZeroDivisionError:print("除数不能为零")任务5-2为Python程序添加异常处理操作贰另外,在except语句中,还可以通过添加as关键字指定一个变量名来保存异常对象,之后可以使用该变量来获取异常的信息(例如异常类型、错误消息等),语法格式如下所示。try:#可能会发生异常的代码块except异常类型as异常变量:#处理异常的代码块在该语法结构中,如果try代码块中的代码抛出了指定的异常类型,则会进入相应的except代码块中,同时将异常的详细信息存储到指定的异常变量中。异常变量可以是任意有效的Python变量名,它的作用是允许在except块中访问有关异常的信息,例如异常类型、异常消息等。任务5-2为Python程序添加异常处理操作贰例如,在将字符串“abc”转换成整数时,抛出ValueError异常并输出异常的相关信息,代码如下。try:x=int("abc")exceptValueErrorase:print("出现了ValueError异常:",e)任务5-2为Python程序添加异常处理操作贰2、try...except...else语句try...except...else语句是try...except语句的升级,在try...except语句的基础上增加了else语句,用于指定没有异常发生时需要执行的代码块。当try语句块中的代码没有引发任何异常时,else语句块中的代码将被执行。try...except...else语句处理异常流程如图所示。任务5-2为Python程序添加异常处理操作贰语法格式如下所示。try:#可能会发生异常的代码块except异常类型1:#处理异常类型1的代码块except异常类型2:#处理异常类型2的代码块...else:#如果try代码块中没有发生任何异常,则会执行else代码块任务5-2为Python程序添加异常处理操作贰需要注意的是,如果except代码块中没有匹配到抛出的异常类型,那么程序仍会抛出异常,并且else中的代码也不会被执行。例如,使用try...except...else语句来处理可能出现的异常,代码如下。try:x=int(input("请输入一个整数:"))y=10/xexceptValueErrorase:print("无效的输入:",e)exceptZeroDivisionErrorase:print("除数不能为零:",e)else:print("计算结果是:",y)在上述示例中,try代码块中尝试将用户输入的字符串转换成整数,并计算10除以该整数。如果用户输入无效的字符串或者除数为零,则会抛出相应的异常并被except代码块捕获处理;否则,如果转换及计算成功,则会执行else代码块中的计算结果输出操作。任务5-2为Python程序添加异常处理操作贰3、finally语句finally语句是Python中用于try...except语句的一种结构,它在try或except代码块执行完毕后必定会执行,且无论前面的代码是否抛出异常。通常情况下,finally语句被用来释放资源或进行一些必要的清理工作。finally语句处理异常流程如图所示。任务5-2为Python程序添加异常处理操作贰语法格式如下所示。try:#可能会发生异常的代码块except异常类型1:#处理异常类型1的代码块except异常类型2:#处理异常类型2的代码块...finally:#必须执行的代码块,通常用于资源的释放和清理工作任务5-2为Python程序添加异常处理操作贰语法格式如下所示。try:#可能会发生异常的代码块except异常类型1:#处理异常类型1的代码块except异常类型2:#处理异常类型2的代码块...finall
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 插座用电安全
- 那份不一样的真情作文800字-那份不一样的真情初三作文五篇
- 个人的安全承诺书模板锦集九篇
- 难治性淋巴瘤护理
- 白天鹅红珊瑚读后感
- 关于端午节演讲稿模板锦集六篇
- 高三上学期物理教学计划三篇
- 竞职演讲稿范文合集十篇
- 入职自我介绍(15篇)
- 八年级常识教研组工作总结
- 集团公司“三重一大”决策工作实施办法
- 县委书记在县委审计委员会全体会议上的讲话
- 《计算机组成原理》全册详解优秀课件
- 五官科眼耳鼻咽喉科医疗常用器械的认识
- 企业清产核资报表
- 2023年山东商务职业学院招考聘用36人笔试历年高频考点试题含答案附详解
- 平凡之路歌词全文
- 2024年全国硕士研究生考试《英语二》模拟试卷一
- 医疗安全不良事件
- 培训提问(讨论)记录表
- 材料科学基础ppt上海交通大学演示文稿
评论
0/150
提交评论