书签 分享 收藏 举报 版权申诉 / 30
上传文档赚钱

类型Python程序设计基础与应用版教学课件第10-11章.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4142498
  • 上传时间:2022-11-14
  • 格式:PPTX
  • 页数:30
  • 大小:91.71KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Python程序设计基础与应用版教学课件第10-11章.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python 程序设计 基础 应用 教学 课件 10 11
    资源描述:

    1、第10章 文件与文件夹操作110.1 os模块2方法方法功能说明功能说明chdir(path)把path设为当前工作目录curdir当前文件夹environ包含系统环境变量和值的字典extsep当前操作系统所使用的文件扩展名分隔符get_exec_path()返回可执行文件的搜索路径getcwd()返回当前工作目录listdir(path)返回path目录下的文件和目录列表10.1 os模块3方法方法功能说明功能说明remove(path)删除指定的文件,要求用户拥有删除文件的权限,并且文件没有只读或其他特殊属性rename(src,dst)重命名文件或目录,可以实现文件的移动,若目标文件已存

    2、在则抛出异常,不能跨越磁盘或分区replace(old,new)重命名文件或目录,若目标文件已存在则直接覆盖,不能跨越磁盘或分区scandir(path=.)返回包含指定文件夹中所有DirEntry对象的迭代对象,遍历文件夹时比listdir()更加高效sep当前操作系统所使用的路径分隔符startfile(filepath,operation)使用关联的应用程序打开指定文件或启动指定应用程序system()启动外部程序10.1 os模块 import os import os.path os.rename(C:dfg.txt,D:test2.txt)#rename()可以实现文件的改名和移动

    3、 fname for fname in os.listdir(.)if fname.endswith(.pyc,.py,.pyw)#结果略 os.getcwd()#返回当前工作目录C:Python35 os.mkdir(os.getcwd()+temp)#创建目录 os.chdir(os.getcwd()+temp)#改变当前工作目录 os.getcwd()C:Python35temp os.mkdir(os.getcwd()+test)os.listdir(.)test os.rmdir(test)#删除目录 os.listdir(.)410.1 os模块 os.environ.get(pa

    4、th)#获取系统变量path的值 import time time.strftime(%Y-%m-%d%H:%M:%S,#查看文件创建时间 time.localtime(os.stat(yilaizhuru2.py).st_ctime)2016-10-18 15:58:57 os.startfile(notepad.exe)#启动记事本程序510.1 os模块 例例10-1 使用递归法遍历指定目录下所有子目录和文件。from os import listdirfrom os.path import join,isfile,isdirdef listDirDepthFirst(directory

    5、):深度优先遍历文件夹#遍历文件夹,如果是文件就直接输出#如果是文件夹,就输出显示,然后递归遍历该文件夹 for subPath in listdir(directory):path=join(directory,subPath)if isfile(path):print(path)elif isdir(path):print(path)listDirDepthFirst(path)610.2 os.path模块7方法方法功能说明功能说明abspath(path)返回给定路径的绝对路径basename(path)返回指定路径的最后一个组成部分commonpath(paths)返回给定的多个路径

    6、的最长公共路径commonprefix(paths)返回给定的多个路径的最长公共前缀dirname(p)返回给定路径的文件夹部分exists(path)判断文件是否存在getatime(filename)返回文件的最后访问时间getctime(filename)返回文件的创建时间getmtime(filename)返回文件的最后修改时间getsize(filename)返回文件的大小10.2 os.path模块8方法方法功能说明功能说明isabs(path)判断path是否为绝对路径isdir(path)判断path是否为文件夹isfile(path)判断path是否为文件join(path,

    7、*paths)连接两个或多个pathrealpath(path)返回给定路径的绝对路径relpath(path)返回给定路径的相对路径,不能跨越磁盘驱动器或分区samefile(f1,f2)测试f1和f2这两个路径是否引用的同一个文件split(path)以路径中的最后一个斜线为分隔符把路径分隔成两部分,以元组形式返回splitext(path)从路径中分隔文件的扩展名splitdrive(path)从路径中分隔驱动器的名称10.2 os.path模块 path=D:mypython_expnew_test.txt os.path.dirname(path)#返回路径的文件夹名D:mypyth

    8、on_exp os.path.basename(path)#返回路径的最后一个组成部分new_test.txt os.path.split(path)#切分文件路径和文件名(D:mypython_exp,new_test.txt)os.path.split()#切分结果为空字符串(,)os.path.split(C:windows)#以最后一个斜线为分隔符(C:,windows)os.path.split(C:windows)(C:windows,)os.path.splitdrive(path)#切分驱动器符号(D:,mypython_expnew_test.txt)os.path.spli

    9、text(path)#切分文件扩展名(D:mypython_expnew_test,.txt)910.3 shutil模块10方法方法功能说明功能说明copy(src,dst)复制文件,新文件具有同样的文件属性,如果目标文件已存在则抛出异常copy2(src,dst)复制文件,新文件具有原文件完全一样的属性,包括创建时间、修改时间和最后访问时间等等,如果目标文件已存在则抛出异常copyfile(src,dst)复制文件,不复制文件属性,如果目标文件已存在则直接覆盖copyfileobj(fsrc,fdst)在两个文件对象之间复制数据,例如copyfileobj(open(123.txt),op

    10、en(456.txt,a)copymode(src,dst)把src的模式位(mode bit)复制到dst上,之后二者具有相同的模式copystat(src,dst)把src的模式位、访问时间等所有状态都复制到dst上copytree(src,dst)递归复制文件夹disk_usage(path)查看磁盘使用情况move(src,dst)移动文件或递归移动文件夹,也可以给文件和文件夹重命名rmtree(path)递归删除文件夹make_archive(base_name,format,root_dir=None,base_dir=None)创建tar或zip格式的压缩文件unpack_arc

    11、hive(filename,extract_dir=None,format=None)解压缩压缩文件10.3 shutil模块下面的代码演示了如何使用标准库shutil的copyfile()方法复制文件。import shutil#导入shutil模块 shutil.copyfile(C:dir.txt,C:dir1.txt)#复制文件下面的代码将C:Python35Dlls文件夹以及该文件夹中所有文件压缩至D:a.zip文件:shutil.make_archive(D:a,zip,C:Python35,Dlls)D:a.zip下面的代码将刚压缩得到的文件D:a.zip解压缩至D:a_unpa

    12、ck文件夹:shutil.unpack_archive(D:a.zip,D:a_unpack)下面的代码使用shutil模块的方法删除刚刚解压缩得到的文件夹:shutil.rmtree(D:a_unpack)1110.3 shutil模块 下面的代码使用shutil的copytree()函数递归复制文件夹,并忽略扩展名为pyc的文件和以“新”字开头的文件和子文件夹:from shutil import copytree,ignore_patterns copytree(C:python35test,D:des_test,ignore=ignore_patterns(*.pyc,新*)1210.

    13、4 综合案例解析例例10-2 把指定文件夹中的所有文件名批量随机化,保持文件类型不变。from string import ascii_lettersfrom os import listdir,renamefrom os.path import splitext,joinfrom random import choice,randintdef randomFilename(directory):for fn in listdir(directory):#切分,得到文件名和扩展名 name,ext=splitext(fn)n=randint(5,20)#生成随机字符串作为新文件名 newNam

    14、e=.join(choice(ascii_letters)for i in range(n)#修改文件名 rename(join(directory,fn),join(directory,newName+ext)randomFilename(C:test)1310.4 综合案例解析 例例10-3 编写程序,统计指定文件夹大小以及文件和子文件夹数量。import ostotalSize=0fileNum=0dirNum=01410.4 综合案例解析def visitDir(path):global totalSize global fileNum global dirNum for lists

    15、in os.listdir(path):sub_path=os.path.join(path,lists)if os.path.isfile(sub_path):fileNum=fileNum+1#统计文件数量 totalSize=totalSize+os.path.getsize(sub_path)#统计文件总大小 elif os.path.isdir(sub_path):dirNum=dirNum+1#统计文件夹数量 visitDir(sub_path)#递归遍历子文件夹1510.4 综合案例解析def main(path):if not os.path.isdir(path):print

    16、(Error:,path,is not a directory or does not exist.)return visitDir(path)def sizeConvert(size):#单位换算 K,M,G=1024,1024*2,1024*3 if size=G:return str(size/G)+G Bytes elif size=M:return str(size/M)+M Bytes elif size=K:return str(size/K)+K Bytes else:return str(size)+Bytes1610.4 综合案例解析def output(path):pri

    17、nt(The total size of+path+is:+sizeConvert(totalSize)+(+str(totalSize)+Bytes)print(The total number of files in+path+is:,fileNum)print(The total number of directories in+path+is:,dirNum)if _name_=_main_:path=rd:idapro6.5plus main(path)output(path)1710.4 综合案例解析例例10-4 编写程序,递归删除指定文件夹中指定类型的文件和大小为0的文件。fro

    18、m os.path import isdir,join,splitextfrom os import remove,listdir,chmod,statfiletypes=(.tmp,.log,.obj,.txt)#指定要删除的文件类型def delCertainFiles(directory):if not isdir(directory):return for filename in listdir(directory):temp=join(directory,filename)if isdir(temp):delCertainFiles(temp)#递归调用 elif splitext(

    19、temp)1 in filetypes or stat(temp).st_size=0:chmod(temp,0o777)#修改文件属性,获取删除权限 remove(temp)#删除文件 print(temp,deleted.)delCertainFiles(rC:test)18第11章 异常处理结构11.1 异常的概念与表现形式异常是指程序运行时引发的错误,引发错误的原因有很多,例如除零、下标越界、文件不存在、网络异常、类型错误、名字错误、字典键错误、磁盘空间不足,等等。如果这些错误得不到正确的处理将会导致程序终止运行,而合理地使用异常处理结构可以使得程序更加健壮,具有更强的容错性,不会因为

    20、用户不小心的错误输入或其他运行时原因而造成程序终止。也可以使用异常处理结构为用户提供更加友好的提示。程序出现异常或错误之后是否能够调试程序并快速定位和解决存在的问题也是程序员综合水平和能力的重要体现方式之一。11.1 异常的概念与表现形式当程序执行过程中出现错误时Python会自动引发异常,程序员也可以通过raise语句显式地引发异常。异常处理是因为程序执行过程中由于输入不合法导致程序出错而在正常控制流之外采取的行为。严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而试图访问不存在的对象,或者试图访问不存在的文件,等等。当Python检测到一个错误时

    21、,解释器就会指出当前程序流已经无法再继续执行下去,这时候就出现了异常。11.1 异常的概念与表现形式 异常表现形式:2/0#除0错误Traceback(most recent call last):File,line 1,in 2/0ZeroDivisionError:division by zero a+2#操作数类型不支持,略去异常的详细信息TypeError:Cant convert int object to str implicitly 3,4,5*3#操作数类型不支持TypeError:unsupported operand type(s)for*:set and int prin

    22、t(testStr)#变量名不存在NameError:name testStr is not defined fp=open(rD:test.data,rb)#文件不存在FileNotFoundError:Errno 2 No such file or directory:D:test.data11.1 异常的概念与表现形式 len(3)#参数类型不匹配TypeError:object of type int has no len()list(3)#参数类型不匹配TypeError:int object is not iterable import socket sock=socket.soc

    23、ket()sock.connect(1.1.1.1,80)#无法连接远程主机TimeoutError:WinError 10060 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。2311.2 异常处理结构 Python提供了多种不同形式的异常处理结构,基本思路都是一致的:先尝试运行代码,如果没有问题就正常执行,如果发生了错误就尝试着去捕获和处理,最后实在没办法了才崩溃。11.2.1 try.except.例例11-1 编写程序,接收用户输入,并且要求用户必须输入整数,不接收其他类型的输入。while True:x=input(Please input:)try:x=in

    24、t(x)print(You have input 0.format(x)break except Exception as e:print(Error.)Please input:234cError.Please input:5You have input 52511.2.2 try.except.else.例例11-2 使用try.except.else.结构改写例11-1的代码。while True:x=input(Please input:)try:x=int(x)except Exception as e:print(Error.)else:print(You have input 0

    25、.format(x)breakPlease input:888cError.Please input:888You have input 88811.2.3 try.except.finally.例例11-3 编写程序,接收一个文本文件的名字,预期该文件中只包含一个整数,要求输出该数字加5之后的结果。如果文件不存在就提示不存在;如果文件存在但内容格式不正确,就提示文件内容格式不正确。filename=input(请输入一个文件名:)try:fp=open(filename)#尝试打开文件 try:#尝试读取数据并计算和输出 print(int(fp.read()+5)except:#读取文件或

    26、计算失败时执行的代码 print(文件内容格式不正确。)finally:#确保文件能够关闭 fp.close()except:#打开文件失败时执行的代码 print(文件不存在)11.2.4 可以捕捉多种异常的异常处理结构 例例11-4 使用异常处理结构捕获多种可能的异常。try:x=float(input(请输入被除数:)y=float(input(请输入除数:)z=x/yexcept ZeroDivisionError:print(除数不能为零)except ValueError:print(被除数和除数应为数值类型)except NameError:print(变量不存在)else:pr

    27、int(x,/,y,=,z)11.3 断言与上下文管理语句断言语句assert也是一种比较常用的代码调试技术,常用来在程序的某个位置确认指定的条件必须满足,如果满足条件就继续执行后续的代码,否则就抛出异常。一般来说,通过了严格测试的代码在正式发布之前会删除assert语句,这样可以适当提高程序运行速度。a=3 b=5 assert a=b,a must be equal to bAssertionError:a must be equal to b11.3 断言与上下文管理语句 上下文管理(context manager)语句with可以自动管理资源,不论因为什么原因(哪怕是代码引发了异常)跳出with块,总能保证文件被正确关闭,并且可以在代码块执行完毕后自动还原进入该代码块时的现场,常用于文件操作、数据库连接、网络通信连接和多线程、多进程同步等场合。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Python程序设计基础与应用版教学课件第10-11章.pptx
    链接地址:https://www.163wenku.com/p-4142498.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库