Python程序设计基础与应用版教学课件第10-11章_第1页
Python程序设计基础与应用版教学课件第10-11章_第2页
Python程序设计基础与应用版教学课件第10-11章_第3页
Python程序设计基础与应用版教学课件第10-11章_第4页
Python程序设计基础与应用版教学课件第10-11章_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、rt os.path os.rename(C:dfg.txt, D:test2.txt) #rename()可以实现文件的改名和移动 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.li

4、stdir(.)test os.rmdir(test) #删除目录 os.listdir(.)410.1 os模块 import os410.1 os模块 os.environ.get(path) #获取系统变量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模块 os.environ.get(10.1

5、 os模块例10-1 使用递归法遍历指定目录下所有子目录和文件。from os import listdirfrom os.path import join, isfile, isdirdef listDirDepthFirst(directory): 深度优先遍历文件夹 #遍历文件夹,如果是文件就直接输出 #如果是文件夹,就输出显示,然后递归遍历该文件夹 for subPath in listdir(directory): path = join(directory, subPath) if isfile(path): print(path) elif isdir(path): print(

6、path) listDirDepthFirst(path)610.1 os模块例10-1 使用递归法遍历指定目录下所10.2 os.path模块7方法功能说明abspath(path)返回给定路径的绝对路径basename(path)返回指定路径的最后一个组成部分commonpath(paths)返回给定的多个路径的最长公共路径commonprefix(paths)返回给定的多个路径的最长公共前缀dirname(p)返回给定路径的文件夹部分exists(path)判断文件是否存在getatime(filename)返回文件的最后访问时间getctime(filename)返回文件的创建时间ge

7、tmtime(filename)返回文件的最后修改时间getsize(filename)返回文件的大小10.2 os.path模块7方法功能说明abspath(10.2 os.path模块8方法功能说明isabs(path)判断path是否为绝对路径isdir(path)判断path是否为文件夹isfile(path)判断path是否为文件join(path, *paths)连接两个或多个pathrealpath(path)返回给定路径的绝对路径relpath(path)返回给定路径的相对路径,不能跨越磁盘驱动器或分区samefile(f1, f2)测试f1和f2这两个路径是否引用的同一个文件

8、split(path)以路径中的最后一个斜线为分隔符把路径分隔成两部分,以元组形式返回splitext(path)从路径中分隔文件的扩展名splitdrive(path)从路径中分隔驱动器的名称10.2 os.path模块8方法功能说明isabs(pa10.2 os.path模块 path=D:mypython_expnew_test.txt os.path.dirname(path) #返回路径的文件夹名D:mypython_exp os.path.basename(path) #返回路径的最后一个组成部分new_test.txt os.path.split(path) #切分文件路径和文件

9、名(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.splitext(path) #切分文件扩展名(D:mypython_expnew_test, .txt)910.2 os.path模块 path=D:

10、m10.3 shutil模块10方法功能说明copy(src, dst)复制文件,新文件具有同样的文件属性,如果目标文件已存在则抛出异常copy2(src, dst)复制文件,新文件具有原文件完全一样的属性,包括创建时间、修改时间和最后访问时间等等,如果目标文件已存在则抛出异常copyfile(src, dst)复制文件,不复制文件属性,如果目标文件已存在则直接覆盖copyfileobj(fsrc, fdst)在两个文件对象之间复制数据,例如copyfileobj(open(123.txt), open(456.txt, a)copymode(src, dst)把src的模式位(mode bi

11、t)复制到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_archive(filename, extract_dir=None, format=

12、None)解压缩压缩文件10.3 shutil模块10方法功能说明copy(src10.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_unpac

13、k文件夹: shutil.unpack_archive(D:a.zip, D:a_unpack)下面的代码使用shutil模块的方法删除刚刚解压缩得到的文件夹: shutil.rmtree(D:a_unpack)1110.3 shutil模块下面的代码演示了如何使用标准库s10.3 shutil模块下面的代码使用shutil的copytree()函数递归复制文件夹,并忽略扩展名为pyc的文件和以“新”字开头的文件和子文件夹: from shutil import copytree, ignore_patterns copytree(C:python35test, D:des_test, ign

14、ore=ignore_patterns(*.pyc, 新*)1210.3 shutil模块下面的代码使用shutil的co10.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): #切分

15、,得到文件名和扩展名 name, ext = splitext(fn) n = randint(5, 20) #生成随机字符串作为新文件名 newName = .join(choice(ascii_letters) for i in range(n) #修改文件名 rename(join(directory, fn), join(directory, newName+ext)randomFilename(C:test)1310.4 综合案例解析例10-2 把指定文件夹中的所有10.4 综合案例解析例10-3 编写程序,统计指定文件夹大小以及文件和子文件夹数量。import ostotalSiz

16、e = 0fileNum = 0dirNum = 01410.4 综合案例解析例10-3 编写程序,统计指定文10.4 综合案例解析def visitDir(path): global totalSize global fileNum global dirNum for lists 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_p

17、ath) #统计文件总大小 elif os.path.isdir(sub_path): dirNum = dirNum+1 #统计文件夹数量 visitDir(sub_path) #递归遍历子文件夹1510.4 综合案例解析def visitDir(path)10.4 综合案例解析def main(path): if not os.path.isdir(path): print(Error:, path, is not a directory or does not exist.) return visitDir(path)def sizeConvert(size): #单位换算 K, M,

18、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 main(path):1610.4 综合案例解析def output(path): print(The total size of +path+ is:+sizeConvert(totalSize) +(+str

19、(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 综合案例解析def output(path):110.4 综合案例解析例10-4 编写程序,递归删除指定文件夹中指定类型的文件和大小为0的文件。from os.path import is

20、dir, 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

21、(temp)1 in filetypes or stat(temp).st_size=0: chmod(temp, 0o777) #修改文件属性,获取删除权限 remove(temp) #删除文件 print(temp, deleted.)delCertainFiles(rC:test)1810.4 综合案例解析例10-4 编写程序,递归删除指第11章 异常处理结构第11章 异常处理结构11.1 异常的概念与表现形式异常是指程序运行时引发的错误,引发错误的原因有很多,例如除零、下标越界、文件不存在、网络异常、类型错误、名字错误、字典键错误、磁盘空间不足,等等。如果这些错误得不到正确的处理将会导

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

23、于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而试图访问不存在的对象,或者试图访问不存在的文件,等等。当Python检测到一个错误时,解释器就会指出当前程序流已经无法再继续执行下去,这时候就出现了异常。11.1 异常的概念与表现形式当程序执行过程中出现错误时P11.1 异常的概念与表现形式异常表现形式: 2 / 0 #除0错误Traceback (most recent call last): File , line 1, in 2 / 0ZeroDivisionError: division by zero a + 2 #操作数类型不支持,略去异常的详细信息TypeError:

24、 Cant convert int object to str implicitly 3, 4, 5 * 3 #操作数类型不支持TypeError: unsupported operand type(s) for *: set and int print(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 异常的概念与表现形式异常表

25、现形式:11.1 异常的概念与表现形式 len(3) #参数类型不匹配TypeError: object of type int has no len() list(3) #参数类型不匹配TypeError: int object is not iterable import socket sock = socket.socket() sock.connect(1.1.1.1, 80) #无法连接远程主机TimeoutError: WinError 10060 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。2311.1 异常的概念与表现形式 len(3) 11.2 异常

26、处理结构Python提供了多种不同形式的异常处理结构,基本思路都是一致的:先尝试运行代码,如果没有问题就正常执行,如果发生了错误就尝试着去捕获和处理,最后实在没办法了才崩溃。11.2 异常处理结构Python提供了多种不同形式的异常11.2.1 try.except.例11-1 编写程序,接收用户输入,并且要求用户必须输入整数,不接收其他类型的输入。 while True: x = input(Please input:) try: x = int(x) print(You have input 0.format(x) break except Exception as e: print(Er

27、ror.)Please input:234cError.Please input:5You have input 52511.2.1 try.except.例11-1 11.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.format(x) breakPlease input:888cError.Please input:888You have input 88811.2.2 try.except.else.11.2.3 try.except.finally.例11-3 编写程序,接收一个文本文件的名字,预期该文件中只包含一个整数,要求输出该数字加5之后的结果。如果文件不存在就提示不存在;如果文件存在但内容格式不正确,就提示文件内容格式不正确。filename = inpu

温馨提示

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

评论

0/150

提交评论