人工智能及Python应用 课件 第8章 文件和异常-项目日报管理_第1页
人工智能及Python应用 课件 第8章 文件和异常-项目日报管理_第2页
人工智能及Python应用 课件 第8章 文件和异常-项目日报管理_第3页
人工智能及Python应用 课件 第8章 文件和异常-项目日报管理_第4页
人工智能及Python应用 课件 第8章 文件和异常-项目日报管理_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能及Python应用第8章文件和异常—项目日报管理

1任务导入2职业能力目标3知能达标4素养提升5视野拓展6任务评价目录1任务导入返回主目录

某公司作为科技领域的龙头企业,其项目规模庞大、团队成员众多,项目管理面临着进度把控难、资源协调复杂等挑战。为了提升管理效率,公司决定开发一款高效的项目日报管理系统,帮助项目经理实时掌握项目动态、优化资源配置。小E是公司开发部门的骨干成员,凭借丰富的项目开发经验和对Python技术的深入理解,主动承担了这一模块的设计与开发任务。接下来,让我们一起跟随小E的脚步,探索如何用Python语言编程实现项目管理,打造一款智能化、高效化的日报管理系统。2职业能力目标返回主目录职业技能类别职业能力要求人工智能工程师(HCIA-AI)掌握Python文件操作掌握Python异常操作人工智能训练师(四级)理解文件的使用方式理解异常的分类“Python程序开发”技能竞赛能正确操作使用文件能正确处理不同的异常3知能达标返回主目录文件与异常

至此,大家已经掌握开发Python程序所需的基本技能。本章主要进一步学习文件处理,让程序能够快速地处理批量的数据;还将学习异常处理,避免程序在面对意外情形时崩溃。在学习这些知识点后,将能提高程序的适用性、可用性和稳定性。主要知识点【知能基础】文件操作文件是操作系统用于存储信息的基本单位。在Python中,文件是存储在磁盘或其他持久性存储介质上的数据集合,可以是文本文件、二进制文件、图片、视频、音频等任何形式的数据。Python提供了一套内置的文件操作函数和方法,允许程序打开、读取、写入和关闭文件。

第一个filename参数是文件名字符串,要打开的目标文件名。

第二个mode参数是设置打开文件时的模式,取值有多个,“r”表示文件只能读取,“w”表示文件只能写入(如有同名会被覆盖),“a”表示打开文件时并追加内容,任何写入的数据会自动添加到文件末尾,“r+”表示打开文件进行读写。mode参数是可选项,省略时默认为“r”模式。

第三个enconding参数是指定文件的编码格式,为可选项,为确保兼容性和扩展性,推荐使用utf-8。f=open(filename,mode="

",enconding="

")格式【知能基础】文件操作-文件打开打开文件是文件操作的第一步,可使用open()函数打开文件,语法格式为:第一行代码:打开test1.txt,这个filename参数是必输的,其余参数可缺省,返回一个文件对象,并将其赋值给变量f。第二行代码:打印输出变量f。

提示:test1.txt需提前准备好。【知能基础】文件操作-文件打开【示例】使用open()函数打开已有文件test1.txt。f=open("test1.txt")print(f)示例代码运行结果【知能基础】文件操作-文件打开通过运行结果可以看到,open()函数返回了一个文件对象,文件名称是“test1.txt”,读取文件的模式是“只读”,默认编码方式是“cp936”。【示例】使用open()函数打开不存在的文件A.txt。【知能基础】文件操作-文件打开f=open("A.txt")print(f)示例代码运行结果【知能基础】文件操作-文件打开通过运行结果可以看到,若打开的文件不存在,open()函数打开文件失败,程序则会抛出异常,显示“FileNotFoundError”报错信息。【知能基础】文件操作-文件打开f=open("test1.txt","r",encoding="utf-8")print(f)示例代码"r"读取模式(只读)"w"写入模式(只写)"r+"读写模式(可读可写)"a"追加写入模式

文件打开并操作完,需要关闭文件,以释放资源。常见的文件关闭方法有两种:显式关闭和使用with语句。(1)显式关闭

使用显式方式关闭文件test1.txt。【知能基础】文件操作-文件关闭#显式关闭文件操作f=open("test1.txt","r",encoding="utf-8")print(f.tell())f.close()print(f.tell())#报错:ValueError示例代码

f.tell()函数用于获取当前文件指针的位置(以字节数为单位),初始打开文件时指针位于文件开头(位置

0)。运行结果【知能基础】文件操作-文件关闭0Traceback(mostrecentcalllast):File"......",line5,in<module>print(f.tell())#报错:ValueError:I/OoperationonclosedfileValueError:I/Ooperationonclosedfile.(2)使用with语句with语句是一种上下文管理器,当with中的代码块执行完毕时,会自动关闭文件。【示例】使用with语句关闭文件。【知能基础】文件操作-文件关闭#使用with语句关闭文件操作withopen("test1.txt",encoding="UTF-8")asf:print(f.tell())#文件在这里已经被自动关闭print(f.tell())#报错:ValueError示例代码【知能基础】文件操作-文件关闭运行结果0Traceback(mostrecentcalllast):File"......",line5,in<module>print(f.tell())#报错:ValueError:I/OoperationonclosedfileValueError:I/Ooperationonclosedfile.以上介绍的两种方式都可以完成文件关闭。在实际使用时:(1)如果使用with语句,则不需要显式调用close()函数。(2)如果没使用with语句,请确保在适当的位置调用close()函数以关闭文件。(3)两种方式中优先推荐with方式,因为它确保文件在使用完毕后被正确关闭。【知能基础】文件操作-文件关闭Tips

文件除了打开与关闭操作外,读取文件是常见的操作,以下是常用的文件读取操作。(1)read()方法:使用read()方法读取指定文件不同长度的文件内容。【示例】使用read()方法读取指定文件前3个字节。以下是运行结果图。运行结果【知能基础】文件操作-文件读取withopen("test2.txt","r",encoding="utf-8")asf:content1=f.read(3)print("read(3)方法读取到的文件内容:\n",content1)示例代码【知能基础】文件操作-文件读取【示例】在上述示例代码基础上,使用read()方法读取整个文件内容。观察运行结果和原文有何不同?【知能基础】文件操作-文件读取withopen("test2.txt","r",encoding="utf-8")asf:content2=f.read()print("read()方法读取到的文件内容:\n",content2)示例代码运行结果【知能基础】文件操作-文件读取read()方法读取到的文件内容:

三中全会决定解读|健全绿色低碳发展机制2024-07-2208:34新华社北京7月21日电(记者高敬)21日发布的《中共中央关于进一步全面深化改革、推进中国式现代化的决定》对深化生态文明体制改革作出部署,提出健全绿色低碳发展机制。决定提出,聚焦建设美丽中国,加快经济社会发展全面绿色转型,健全生态环境治理体系,推进生态优先、节约集约、绿色低碳发展,促进人与自然和谐共生。决定提出关于健全绿色低碳发展机制的一系列重大部署,如“实施支持绿色低碳发展的财税、金融、投资、价格政策和标准体系”“优化政府绿色采购政策”“加快规划建设新型能源体系”“建立能耗双控向碳排放双控全面转型新机制”“构建碳排放统计核算体系、产品碳标识认证制度、产品碳足迹管理体系”等。习近平生态文明思想研究中心副主任俞海表示,中国式现代化是人与自然和谐共生的现代化。当前,我国经济社会发展已进入加快绿色化、低碳化的高质量发展阶段。要把绿色低碳发展作为解决生态环境问题的治本之策,加快形成绿色生产方式和生活方式,厚植高质量发展的绿色底色。同时也要看到,我国绿色低碳发展水平整体还不高,经济社会发展全面绿色转型内生动力不足、基础薄弱。【示例】在上述示例代码基础上,再次使用read()方法读取整个文件,观察运行结果又有何变化?【知能基础】文件操作-文件读取withopen("test2.txt","r",encoding="utf-8")asf:content3=f.read()print(“再次调用read()方法读取到的文件内容:\n",content3)示例代码运行结果【知能基础】文件操作-文件读取通过运行结果可以看到,没有读取到任何文件中的内容,是因为前一次read()方法已经到达了文件末尾,所以当前只会返回一个空字符串。从以上3个示例的运行结果可以发现:(1)read(size)方法可用于读取文件内容,它会读取一些数据,并以字符串的形式返回结果。当read(size)方法中size传递了一个非负参数时,会读取并返回文本中的前size个字符。(2)当read(size)方法中省略size或者size为负数时,会读取并返回整个文件的内容。(3)若前面程序已经读取过内容,那当次read就会从前一次读取的内容后开始读取,若前面程序没有读取过内容,则会从文本的开始读取所有内容。【知能基础】文件操作-文件读取Tips(2)readline()方法:从文件中读取单行数据。【示例】使用readline()方法读取文件。以下是运行结果图。运行结果【知能基础】文件操作-文件读取withopen("test2.txt","r",encoding="utf-8")asf:print("第一次调用readline()\n",f.readline())print("第二次调用readline()\n",f.readline())print("第三次调用readline()\n",f.readline())print("第四次调用readline()\n",f.readline())示例代码【知能基础】文件操作-文件读取(3)readlines()方法:从文件中读取所有行到列表中。【示例】使用readlines()方法读取文件。以下是运行结果图。运行结果【知能基础】文件操作-文件读取withopen("test2.txt","r",encoding="utf-8")asf:print(f.readlines())示例代码【知能基础】文件操作-文件读取【示例】在上个示例基础上,去掉每行末尾的“\n”。以下是实现效果图。运行结果【知能基础】文件操作-文件读取withopen("test2.txt","r",encoding="utf-8")asf:contents=f.readlines()

contents=[content.strip()forcontentincontents]print(contents)示例代码【知能基础】文件操作-文件读取在Python中,写入文件是一项常见的任务。使用文件对象的write()方法将数据写入文件中。(1)write()方法【示例】使用write()方法将字符串写入文件中。以下是运行结果图。运行结果【知能基础】文件操作-文件写入content="欢迎进入人工智能及Python的世界!"

withopen("write_example.txt",'w',encoding="utf-8")asf:f.write(content)

print("写入完成")示例代码【知能基础】文件操作-文件写入从上个示例运行结果来看,程序没有出现问题,打印输出“写入成功”。效果图也显示出字符串已经成功写入了txt文件中。还有一点需要注意,在执行代码前,项目中是没有存在“write_example.txt”这个文件的,为什么代码执行完后,项目中存在了呢?这是因为使用了“w”写入模式,这个模式的规则是如果文件“write_example.txt”已存在,它会被覆盖;如果文件不存在,它会被创建。

如果文件已经存在,我们希望在文件末尾追加内容而不是覆盖原文件,该怎么做呢?【知能基础】文件操作-文件写入withopen("write_example.txt",'a',encoding="utf-8")asf:f.write("这是一个美妙的世界!")

print("追加完成!")示例代码【知能基础】文件操作-文件写入成功地将新的内容“这是一个美妙的世界!”追加到了在文件后。运行结果【知能基础】文件操作-文件写入【示例】使用write()方法将其他类型数据写入文件。以下是运行结果图。运行结果【知能基础】文件操作-文件写入data_list=["apple","banana","cherry"]

withopen("my_list.txt",'w',encoding="utf-8")asf:foritemindata_list:f.write(f"{item}\n")

print("列表已写入文件!")示例代码【知能基础】文件操作-文件写入【知能基础】异常处理

程序错误分为两种:语法错误与异常错误。

语法错误是指代码没有按照Python规定语法去写从而产生的错误,这种错误是没有办法抑制的。

而语句或者表达式使用了正确的语法,执行时仍触发让Python不知所措的错误,执行代码时将检测到的错误称为异常错误,这种错误是可以避免的。软件开发中,程序错误(Bug)是不可避免的,但优秀的程序员应具备高效处理错误的能力。

大多数异常不会被程序处理,而是显示下图中的错误信息。错误信息的最后一行说明程序遇到了什么类型的错误。

异常有不同的类型,而类型名称会作为错误信息的一部分打印出来。右图中的异常类型依次是ZeroDivisionError(除数为零)、NameError(尝试访问一个不存在的变量)、TypeError(不同类型间的无效操作)。【知能基础】异常处理

try…except…语句用于处理解决程序异常问题,把有可能报错的代码放到try代码块中,如果有报错,直接执行except代码块;如果没有报错,不执行except代码块。

在企业开发规范中明确提出:异常类型需明确捕获(如ValueError),禁止空的except语句。【示例】使用try…except语句处理除数为0时的异常问题。以下为运行结果图。运行结果【知能基础】异常处理defdivide_numbers(a,b):try:result=a/bexceptZeroDivisionError:print("Error:除数为0是不允许的!")

if__name__=='__main__':x=float(input("请输入被除数x:"))y=float(input("请输入除数y:"))divide_numbers(x,y)示例代码【知能基础】异常处理

无论程序是否正确,代码执行完成,是不是都应该给用户返回运行结果呢?如何修改以上代码达到这样的效果呢?【知能进阶】异常处理【知能进阶】异常处理使用try…except…else…finally语句处理异常,可以实现以下效果。defdivide_numbers(a,b):try:result=a/bexceptZeroDivisionError:print("Error:除数为0是不允许的!")else:print(f"{a}/{b}的结果是{result}")finally:print("divide_numbers的执行已完成")if__name__=='__main__':x=float(input("请输入被除数x:"))y=float(input("请输入除数y:"))divide_numbers(x,y)示例代码【知能进阶】异常处理

在异常处理时,还可以在except代码块中捕获多个异常类型,以下为实现效果。【知能进阶】异常处理try:value1=float(input("请输入被除数:"))value2=float(input("请输入除数:"))result=value1/value2exceptValueError:print("请输入一个有效的数字")exceptZeroDivisionError:print("除数不能为0")exceptExceptionase:print(f"发生了一个异常:{e}")示例代码【知能进阶】异常处理-多个异常错误处理4素养提升返回主目录【任务实践】项目日报管理

小E负责开发的项目日报管理主要实现将日报保存至csv文件,便于查看,具体实现步骤如下:(1)如果用户是第一次使用项目日报管理系统,先创建一个csv文件,为了储存之后的日报。(2)如果用户不是第一次使用项目日报管理系统,那就输入除了1以外的正整数,即可顺利进入到系统中,用户会看到如下图所示菜单界面:用户如果选择1,将内容写入到csv文件中。用户如果选择2,读取出csv文件中所有的日报内容。用户如果选择3,打印出所有日报数量。用户如果选择4,退出系统。任务描述任务实施(1)创建存放源代码的文件夹创建项目名为【report】,在该项目文件夹下新建Python文件,名为【daily_report.py】。准备就绪就可以开始编码了。【任务实践】项目日报管理(2)在项目文件中搭建整体代码框架。if__name__=='__main__':num=int(input("请问您是第一次使用日报系统吗?('是'请输入1,'否'请输入2)"))ifnum==1:create_file()print("日报系统已创建,请重启系统")else:whileTrue:print("\n---日报管理系统---")print("1.添加日报")print("2.查看所有日报")print("3.统计日报数量")print("4.退出")#获取用户输入choice=input("请选择操作(1-4):")ifchoice=='1':add_reports()elifchoice=='2':look_reports()elifchoice=='3':statistics_reports()elifchoice=='4':print("退出系统。")breakelse:print("无效的选择,请重新输入。")【任务实践】项目日报管理(3)在项目文件中编写create_file()函数。defcreate_file():if(notos.path.exists(file_name)):withopen(file_name,mode='w',newline='',encoding='gbk')asfile:file.write("date,title,content\n")

print("日报文件创建成功!")【任务实践】项目日报管理(4)在项目文件中编写日报add_reports()函数。

defadd_reports():date=input("请输入日期(如2024-09-18):")title=input("请输入今日工作标题:")content=input("请输入今日工作具体内容:")line_data=date+","+title+","+content+'\n'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论