版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目八Python模块任务8.2CONTENTS目录创建模块任务8.1简单模块的使用方法任务8.1简单的模块的使用方法在Python语言中,使用import关键字可以导入整个模块,其语法格式如下:8.1.1导入整个模块import模块名[as别名]调用模块中的函数的语法格式如下:模块名.函数名示例代码如下:>>>importmath>>>math.sqrt(5)2.23606797749979当编程人员需要用到模块中特定的某个函数时,可以只导入这个函数,其语法格式如下:8.1.2导入特定的函数from模块名import函数名[as别名]【例8-2】导入模块中特定的函数。程序代码如下:frommathimportsqrt#导入模块中特定的函数fromrandomimportrandintasr #给导入的特定函数指定别名rprint("导入模块中特定函数的应用\n")number_1=50print(sqrt(number_1))
#不需要使用模块名作为前缀a=r(1,100)
#使用函数别名print(a)Python语言允许将一个模块中的所有内容(包括函数和变量等)导入当前的程序,可以直接使用模块中的所有函数而不再使用模块名作为前缀,其语法格式如下:8.1.3导入模块中所有函数from模块名import*虽然这种方式写起来比较简单,但是一般不这样使用,因为这样做会降低代码的可读性,同时,也会导致命名空间的混乱。示例代码如下:>>>frommathimport*
#导入标准库math中的所有内容>>>pi
#常数3.141592653589793>>>e2.718281828459045
#常数>>>log2(8)
#计算以2为底的对数3.0Python解释器搜索模块位置的顺序如下:(1)搜索当前目录,如果不在当前目录,则搜索在shell变量PYTHONPATH下的每个目录。(2)如果都找不到,则Python会继续查看默认路径。搜索路径存储在sys模块中的path变量内,可以通过代码来验证,具体如下:8.1.4Python搜索路径>>>importsys>>>print(sys.path)[′′,′C:\\Python\\Python3.11\\Lib\\idlelib′,′C:\\Python\\Python3.11\\python3.11.zip′,′C:\\Python\\Python3.11\\DLLs′,′C:\\Python\\Python3.11\\Lib′,′C:\\Python\\Python3.11′,′C:\\Python\\Python3.11\\Lib\\site-packages′]任务8.2创建模块【例8-3】编写程序,创建“test”模块,并使用模块中的函数。程序代码如下:defmin_0(x,y):
#自定义计算较小值函数ifx>y: #如果x>y成立,则返回y的值returnyelse: #否则返回x的值returnxdefadd_0(a,b): #自定义计算两数之和函数returna+b8.2.1模块的创建为了解决测试代码不在主调程序中执行的问题,Python语言提供了一个“name”属性。“name”属性识别程序的方式是:每个Python模块在运行时都会有一个“name”属性,如果作为模块导入,则其“name”属性的值被自动设置为模块名;如果作为程序直接运行,则其“name”属性的值被自动设置为字符串“main”。在模块被引用时,如果模块中的某一程序块不执行,则编程人员可以通过判断“name”属性的值来实现。例如,上述“test.py”文件的代码可做如下修改:8.2.2“__name__”属性defmin_0(x,y):
#自定义计算较小值函数ifx>y: #如果x>y成立,则返回y的值returnyelse:
#否则返回x的值returnx"name"defadd_0(a,b): #自定义计算两数之和函数returna+b#用于测试ifname==′main′: #识别当前的运行方式
print(′这是用于测试的代码′)
print("-------------------------")
r=min_0(20,15)
print(′测试20和15的较小值为:′,r)
p=add_0(20,15)
print(′测试20和15的和为:′,p)8.2.2“__name__”属性dir([object])8.2.3dir()函数和reload()函数1.dir()函数dir()函数的语法格式如下:示例代码如下:>>>importstring #导入内建string模块>>>dir(string)[′Formatter′,′Template′,′_ChainMap′,′all′,′builtins′,′cached′,′doc′,′file′,′loader′,′name′,′package′,′spec′,′_re′,′_sentinel_dict′,′_string′,′ascii_letters′,′ascii_lowercase′,′ascii_uppercase′,′capwords′,′digits′,′hexdigits′,′octdigits′,′printable′,′punctuation′,′whitespace′]reload(module_name)8.2.3dir()函数和reload()函数2.reload()函数reload()函数的语法格式如下:其中,module_name表示一个模块对象,其返回值也是一个模块对象。示例代码如下:>>>importsys,importlib#导入sys模块和importlib包>>>importlib.reload(sys)<module′sys′(built-in)>8.2.4Python语言中的包包是Python模块文件所在的目录,且该目录下必须存在“init.py”文件(文件内容可以为空)。常见的package_a包和package_b包结构如下:package_a|——init.py|——module_a1.py|——module_a2.py|——module_a3.pypackage_b|——init.py|——module_b1.py|——module_b2.py|——module_b3.pymain.py8.2.4Python语言中的包如果“main.py”文件需要引用package_a包中的module_a1模块,则可以使用下列语句实现:frompackage_aimportmodule_a1importpackage_a.module_a1在package_a包中,如果module_a1模块想要引入另一个package_b包,则Python解释器默认是找不到package_b包的。但是,可以在package_a包的“init.py”文件中添加“sys.path.append(′../′)”语句,并在package_a包的所有模块中都添加“*importinit”语句来实现。谢谢您的欣赏项目九Python文件操作任务9.2任务9.3CONTENTS目录读写文件文件位置任务9.4任务9.1文件的打开和关闭文件和文件夹的相关操作任务9.1文件的打开和关闭文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符‘\n’结尾。文本文件在磁盘上是以二进制形式存储的,在读取和查看文本文件时字处理软件能自动识别,并使用正确的编码方式解码还原为字符串信息。9.1.1文件的概念二进制文件将信息以字节串(bytes)形式进行存储,无法用记事本或其他普通字处理软件直接进行编辑,也无法直接阅读和理解,需要使用与之相关的软件将其解码后才能正确地读取、显示、修改或执行。1.文本文件2.二进制文件在Python语言中,无论文本文件还是二进制文件,操作步骤基本一致,如下:(1)打开或新建文件,并创建文件对象。(2)对文件内容进行读取、写入、删除、修改等操作。(3)关闭文件并保存文件内容。9.1.2文件的打开Python语言中内建了文件对象,通过open()函数可按照指定的打开方式打开文件,并创建文件对象。open()函数的语法格式如下:文件对象名=open(文件名[,打开方式])在Python语言中,虽然文件会在程序退出后自动关闭,但是考虑到数据的安全性,每次使用完文件后,都需要使用close()函数关闭文件。close()函数的语法格式如下:9.1.3文件的关闭例如,以只写方式打开一个名为“test.txt”的文件,然后关闭文件。程序代码如下:文件对象名.close()file=open(′test.txt′,′w′)
#以只写方式打开一个名为“test.txt”的文件file.close() #关闭文件在Python程序中,读写文件应优先考虑使用上下文管理语句,其语法格式如下:9.1.4上下文管理语句其中,context_expression为表达式;target(s)为对象名。当对文件内容进行读写时,可使用with语句,其语法格式如下:withcontext_expression[astarget(s)]:with-bodywithopen(文件名[,打开方式])as文件对象名:#通过文件对象名读写文件内容语句示例代码如下:withopen(′test.txt′,′r′)assrc:src.read()任务9.2读写文件1.read()函数
read()函数用于从文件中读取指定的字节数,如果未给定参数或参数为负,则读取整个文件内容,其语法格式如下:文件对象名.read([size])9.2.1读文件
【例9-2】使用read()函数读取“test.txt”文件。程序代码如右:print("使用read()函数读取“test.txt”文件\n")#以只读方式打开“test.txt”文件withopen(′test.txt′,′r′)asfile:line=file.read(10) #读取文件中的前10字节print("读取文件的前10字节并输出")print(line) #输出文件中的前10字节print("-------------------------")#读取文件中剩余的所有内容content=file.read()print("读取文件中剩余的所有内容并输出")print(content)
#输出文件中剩余的所有内容2.readline()函数
readline()函数的语法格式如下:文件对象名.readline([size])9.2.1读文件【例9-3】使用readline()函数读取“test.txt”文件。程序代码如下:print("使用readline()函数读取“test.txt”文件\n")#以只读方式打开“test.txt”文件withopen(′test.txt′,′r′)asfile:line_1=file.readline()
#读取第一行
print(line_1)
#输出print("-------------------------")line_2=file.readline(10) #读取第二行的前10个字符print(line_2)
#输出print("-------------------------")
3.readlines()函数
readlines()函数用于读取所有行(直到结束符EOF,EndOfFile)并返回列表,列表中每个元素为文件中的一行数据,其语法格式如下:文件对象名.readlines()9.2.1读文件【例9-4】使用readlines()函数读取“test.txt”文件。程序代码如下:print("使用readlines()函数读取“test.txt”文件\n")#以只读方式打开“test.txt”文件withopen(′test.txt′,′r′)asfile:content=file.readlines()print(content)
#读取所有行并返回列表#输出列表print("----------------------------")fortempincontent: #遍历列表print(temp)1.write()函数
write()函数用于向文件中写入指定字符串,其语法格式如下:文件对象名.write(str)9.2.2写文件【例9-5】向“test_0.txt”文件中写入如下数据。ChineseMathEnglishPhysicsChemistryArtistGeography程序代码如下:1.write()函数9.2.2写文件#print("使用write()函数向“test_0.txt”文件中写入数据\n")#file=open(′test_0.txt′,′w′)#打开名为“test_0.txt”的文件withopen(′test_0.txt′,′w′)asfile:#向文件中输入字符串file.write(′Chinese\n′)file.write(′Math\n′)file.write(′English\n′)file.write(′Physics\n′)file.write(′Chemistry\n′)file.write(′Artist\n′)file.write(′Geography\n′)file.close()
#关闭文件2.writelines()函数
writelines()函数用于向文件中写入一个序列字符串。这个序列字符串是由迭代对象产生的(如一个字符串列表),其语法格式如下:文件对象名.writelines(sequence)9.2.2写文件【例9-6】使用writelines()函数向已有的“test_0.txt”文件中追加如下数据。1.HelloWorld!2.Hello!WelcometoPython!如果要向文件中追加数据,则需要以追加方式“a”打开文件。在使用writelines()函数写入数据时,同样不会自动在列表末尾添加换行符,需要手动添加。程序代码如下:9.2.2写文件#定义列表并赋值list_0=[′1.HelloWorld!′,′2.Hello!WelcometoPython!′]#以追加方式打开原有的“test_0.txt”文件withopen(′test_0.txt′,′a′)asfile:file.writelines(list_0[0])#向文件中追加字符串列表file.writelines(′\n′)file.writelines(list_0[1])file.writelines(′\n′)file.close() #关闭文件任务9.3文件位置tell()函数返回文件的当前位置,即文件位置指针的当前位置,其语法格式如下:文件对象名.tell()9.3.1获取当前读写位置【例9-8】使用tell()函数获取文件当前的读写位置。程序代码如下:print("使用tell()函数获取文件当前的读写位置\n")print("-------------------------\n")#以只读方式打开“test_0.txt”文件withopen(′test_0.txt′,′r′)asfile:line=file.read(7)#读取文件中的前7字节print(line) #输出文件中的前7字节
9.3.1获取当前读写位置
p=file.tell()
#获取文件位置指针的当前位置
print("当前位置:",p) #输出当前位置line=file.read(5) #继续向后读取5字节print(line) #输出读取到的数据p=file.tell() #获取文件位置指针的当前位置print("当前位置:",p) #输出当前位置file.close()seek()函数用于移动文件位置指针到指定位置,其语法格式如下:文件对象名.seek(offset[,whence])9.3.2定位到某个位置【例9-9】创建“seek.txt”文件,并将“Hello!WelcometoPython!”存入文件,再读取“Python”输出到终端。程序代码如下:file_name=input(′输入新建的文件名:′)
#输入文件名withopen(file_name,′w+′)asfile:
#新建文件并以读写方式打开file.write("Hello!WelcometoPython!") #将字符串写入文件file.seek(17)
#将文件位置指针移到第17个字符处string_0=file.read(6)
#读取6个字符给变量string_0print(string_0) #输出file.close() #关闭文件
任务9.4文件和文件夹相关操作9.4.1文件相关操作rename()函数存放在Python语言中的os模块内,用于对文件进行重命名操作,其语法格式如下:os.rename(src,dst)1.rename()函数其中,src表示要修改的文件名;dst表示修改后的新文件名。例如,将“file_12.txt”文件重命名为“file_20.txt”。示例代码如下:>>>importos>>>os.rename("file_12.txt","file_20.txt")9.4.1文件相关操作remove()函数在Python中的os模块中,用于对文件进行删除操作,其语法格式如下:os.remove(path)2.remove()函数其中,path表示指定路径下的文件。例如,删除当前路径下“file_20.txt”文件的示例代码如下:>>>importos>>>os.remove("file_20.txt")9.4.2文件夹相关操作os模块中的mkdir()函数用于创建文件夹。示例代码如下:>>>importos>>>os.mkdir("file0")1.创建文件夹os模块中的rmdir()函数用于删除文件夹。示例代码如下:>>>importos>>>os.rmdir("file0")2.删除文件夹9.4.2文件夹相关操作os模块中的getcwd()函数用于获取文件夹的当前目录。示例代码如下:>>>importos>>>os.getcwd()′C:\\Python\\Python3.11′3.获取当前目录os模块中的chdir()函数用于改变文件夹的默认目录。例如,将文件夹的当前目录改变为上一级目录的代码如下:>>>importos>>>os.chdir("../")4.改变默认目录9.4.2文件夹相关操作os模块中的listdir()函数用于获取文件夹的目录列表。例如,获取文件夹当前路径下的子目录列表的代码如下:>>>importos>>>os.listdir("./")5.获取目录列表9.4.3批量修改文件名【例9-11】批量修改文件名。程序代码如下:#批量在文件名前加前缀importosflag=1
#1表示添加标志,2表示删除标志os.chdir("员工信息") #将当前工作目录切换到“员工信息”目录folder_name=′./′ #获取指定路径的所有文件名dir_list=os.listdir(folder_name)
#遍历输出所有文件名fornameindir_list:print(name)ifflag==1:new_name="Bolin-"+nameelifflag==2:number=len("Bolin-")new_name=name[number:]print(new_name)os.rename(folder_name+name,folder_name+new_name)谢谢您的欣赏项目十Python异常处理任务10.2任务10.3CONTENTS目录异常处理抛出异常任务10.4任务10.1Python语言中的异常自定义异常任务10.1Python语言中的异常程序在执行过程中,由于本身编写问题或外界环境改变而引发的错误称为异常。引发异常的原因有很多,如下标越界、文件不存在、网络异常、数据类型错误等。示例代码如下:10.1.1异常的概念>>>5+"3"Traceback(mostrecentcalllast):File"<pyshell#0>",line1,in<module>5+"3"TypeError:unsupportedoperandtype(s)for+:′int′and′str′>>>10/0Traceback(mostrecentcalllast):File"<pyshell#1>",line1,in<module>10/0ZeroDivisionError:divisionbyzero当尝试访问未知的对象属性时,会引发AttributeError(尝试访问未知的对象属性)异常。示例代码如下:10.1.2常见的异常classAnimal():name=′tiger′animal=Animal()print(animal.name)print(animal.color)1.AttributeError异常Animal类没有定义color属性,在创建Animal类的实例后,访问它的color属性时,会出现AttributeError异常,如图10-1所示。10.1.2常见的异常1.AttributeError异常图10-1
AttributeError异常当尝试以只读方式打开一个不存在的文件时,会引发FileNotFoundError(找不到文件,Python3.2以前是IOError)异常。示例代码如下:10.1.2常见的异常file=open(′111.txt′)2.FileNotFoundError异常在本示例中,使用open()函数打开名为“111.txt”的文件,当该文件不存在时,会出现FileNotFoundError异常,如图10-2所示。图10-2
FileNotFoundError异常Python解释器是通过代码块的缩进来判断代码之间的逻辑关系的。当缩进错误时,会引发IndentationError(缩进错误)异常。示例代码如下:10.1.2常见的异常list_1=[1,2,3,4]foriinlist_1:print(i)3.IndentationError异常由于for循环语句块没有缩进,因此导致程序出现IndentationError异常,如图10-3所示。图10-3
IndentationError异常当使用序列中不存在的索引时,会引发IndexError(索引超出序列的范围)异常。示例代码如下:10.1.2常见的异常list_1=[1,2,3,4,5]print(list_1[5])4.IndexError异常由于list_1列表中没有索引为5的元素,因此当使用索引5访问列表元素时,程序出现IndexError异常,如图10-4所示。图10-4
IndexError异常当使用字典中不存在的“键”时,会引发KeyError(字典中查找一个不存在的关键字)异常。示例代码如下:10.1.2常见的异常dict_1={′one′:1,′two′:2,′three′:3}print(dict_1[′one′])print(dict_1[′three′])print(dict_1[′four′])5.KeyError异常由于字典中只有“one”“two”和“three”3个键,因此当获取“four”键对应的值时,程序出现KeyError异常,如图10-5所示。10.1.2常见的异常图10-5
KeyError异常当尝试访问一个未声明的变量时,会引发NameError(尝试访问一个不存在的变量)异常。示例代码如下:10.1.2常见的异常a=1c=a+bprint(c)6.NameError异常当执行程序时,由于Python解释器在任何命名空间中都没有找到变量b,因此导致程序出现NameError异常,如图10-6所示。图10-6
NameError异常当Python解释器发现语法错误时,会引发SyntaxError异常。示例代码如下:10.1.2常见的异常list_1=["a","b","c","d","e"]foriinlist_1print(i)7.SyntaxError异常由于for循环的后面缺少冒号,因此导致程序出现SyntaxError异常,如图10-7所示。图10-7
SyntaxError异常当将不同类型的数据进行运算操作时,有时会引发TypeError(不同类型间的无效操作)异常。示例代码如下:10.1.2常见的异常birth=input(′birth:′)ifbirth<2000:print("00前")else:print("00后")8.TypeError异常10.1.2常见的异常8.TypeError异常input()函数返回的数据类型是字符串。由于字符串类型数据不能直接与数字类型数据进行比较,因此导致程序出现TypeError异常,如图10-8所示。图10-8
TypeError异常10.1.2常见的异常9.ValueError异常当传给函数的参数类型不正确时,会引发ValueError(传入无效参数)异常。示例代码如下:图10-9
ValueError异常importmathmath.sqrt(-10)由于int()函数传入了无效的字符串类型参数,因此导致程序出现ValueError异常,如图10-9所示。10.1.2常见的异常10.ZeroDivisionError异常当除数为零时,会引发ZeroDivisionError(除数为零)异常。示例代码如下:图10-10
ZeroDivisionError异常a=100/0print(a)由于零不能作为除数,因此导致程序出现ZeroDivisionError异常,如图10-10所示。10.1.3Python语言中的其他异常表10-1
Python语言中的其他异常异常名称描述BaseException所有异常的基类ArithmeticError所有数值计算错误的基类AssertionError断言语句失败DeprecationWarning关于被弃用的特征的警告EnvironmentError操作系统错误的基类EOFError没有内建输入,到达EOF标记任务10.2异常处理1.捕获简单异常捕获简单异常的语法格式如下:try:#可能引发异常语句块exceptException:#异常处理语句块10.2.1try...except语句
其中,try语句块中包含可能引发异常的语句;except中的语句块用于捕获相应的异常;Exception为异常类的名称。2.捕获多个异常
捕获多个异常的结构类似于多分支选择结构,一旦try语句块中的语句抛出异常,就按顺序依次检测并与except语句块匹配。如果某个except语句块捕获到了异常,则其他except语句块将不再捕获异常。捕获多个异常的语法格式如下:try:#可能引发异常的语句块exceptException_1:#异常处理语句块1exceptException_2:#异常处理语句块2exceptException_3:#异常处理语句块3...10.2.1try...except语句3.捕获所有异常捕获所有异常的语法格式如下:try:#可能引发异常语句块except:#异常处理语句块10.2.1try...except语句【例10-3】捕获所有的异常。程序代码如右:print("捕获两个数相除的异常\n")try:number_1=float(input(′请输入被除数:′))number_2=float(input(′请输入除数:′))number_3=number_1/number_2print(′两个数相除,商为:′,number_3)except:print("****************************")print(′出现异常!′)4.捕获异常的信息描述10.2.1try...except语句【例10-4】捕获异常的信息描述。程序代码如下:print("捕获两个数相除的异常\n")try:number_1=float(input(′请输入被除数:′))number_2=float(input(′请输入除数:′))number_3=number_1/number_2print(′两个数相除,商为:′,number_3)exceptExceptionasresult:print("****************************")print("捕获到异常:%s"%result)10.2.2try...except...else语句
try...except...else语句还有一个可选的else语句块,如果要使用该语句块,则必须将其放在except语句块之后。在try语句块中的语句没有发生任何异常时,将执行该语句块。try...except...else的语法格式如下:try:#可能引发异常语句块exceptException[asresult]:#异常处理语句块else:#如果try语句块中的语句没有引发异常,则执行该语句块10.2.3try...except...finally语句
在程序执行过程中,有一种情况是,无论是否捕获到异常,程序都要执行终止行为(如关闭文件),这时可以使用finally语句块进行处理。通常情况下,finally语句块用于释放资源。try...except...finally的语法格式如下:try:#可能引发异常的语句块exceptException[asresult]:#异常处理语句块finally:#无论try语句块中的语句是否引发异常,都会执行该语句块任务10.3抛出异常格式1和格式2是对等的,都会引发指定异常类对象。格式1可以隐式地创建异常类的实例对象;格式2是最常见的,会直接提供一个异常类的实例对象;格式3用于重新引发刚发生的异常。raise异常类
#格式1,引发异常时会隐式地创建异常类对象raise异常类对象 #格式2,引发异常类对象对应的异常raise
#格式3,重新引发刚发生的异常10.3.1raise语句使用raise语句能显式地触发异常,其语法格式如下:示例代码如下:raise异常名称10.3.1raise语句使用异常名引发异常,是指当raise语句指定异常名时,会创建该类的实例对象,然后引发异常,其语法格式如下:1.使用异常名引发异常>>>raiseNameErrorTraceback(mostrecentcalllast):File"<pyshell#0>",line1,in<module>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风电场安全生产管理细则培训
- 2026安龙五中面试题目及答案
- 质管员岗位职责培训课件
- 2026爱护花草面试题目及答案
- 《物联网概论》课件 8.2物联网数据处理
- 小学疾病防控制度培训
- 特种设备安全责任状制度培训
- 教案27- 项目十 一 汽车保值与再生性测评 任务二 汽车再生性测评方法与指标
- 产品低价销售外包合同
- 文化艺术活动外包合同
- 长期照护师职业技能鉴定考试复习题库(附答案)
- 2026年大学财务处招聘考试专业知识模拟题
- 太阳能光热发电课件
- 2026中复神鹰碳纤维西宁有限公司招聘40人考试参考试题及答案解析
- 关于取消原定采购订单的通知函8篇
- 格力中央空调培训课件
- 基于ANSYS Maxwell的圆筒型直线永磁电动机磁场特性分析
- 《液压与气压传动 第5版》课后习题答案
- 文书模板-酒店停业整顿告知书
- 2025年高级车工(三级)技能认定理论考试题库(含答案)
- 风险控制岗位招聘笔试题(某大型央企)2025年试题集详解
评论
0/150
提交评论