Python程序设计基础 课件下 傅彬 超市会员管理系统-正则表达式_第1页
Python程序设计基础 课件下 傅彬 超市会员管理系统-正则表达式_第2页
Python程序设计基础 课件下 傅彬 超市会员管理系统-正则表达式_第3页
Python程序设计基础 课件下 傅彬 超市会员管理系统-正则表达式_第4页
Python程序设计基础 课件下 傅彬 超市会员管理系统-正则表达式_第5页
已阅读5页,还剩160页未读 继续免费阅读

下载本文档

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

文档简介

程序设计基础——超市会员管理系统简单易学易读易维护开源

可移植性

可扩展性

丰富的库

Python目录CONTENTS项目描述01思路分析02函数的基本用法03实现项目04思政导入新冠疫情发生以来,中国政府本着对中国人们和世界人们生命安全和身体健康高度负责的态度,采取最全面、最严格、最彻底的防控举措,同疫情开展坚决斗争。各行各业根据国家疾控中心的指导,制定了疫情防控应急预案,2020年夏季之后,全国疫情全面好转,虽后续还有零星疫情的发生,但始终在可控范围内。2020年中国GDP超百万亿,成为全球唯一实现正增长的国家。函数就相当于疫情防控应急预案,当有疫情发生时,就可以按照预案进行疫情防控,在Python中,当需要重复使用代码时,就可以使用定义和调用函数,提高程序的高质高效。项目描述01一、项目描述本项目主要实现超市会员管理系统,能进行功能菜单显示和会员信息的添加、删除、修改、显示等功能。思路分析02二、思路分析要实现超市会员管理系统,我们需要先搞清楚需要哪些功能。超市会员管理系统负责编辑顾客的信息,适时地更新、查询顾客的资料。主要功能如下:1、新增会员信息。包括会员编号、姓名、性别和联系电话。2、修改会员信息。修改会员姓名、性别和联系电话。3、删除会员信息。4、查询会员信息。根据会员编号、姓名、联系电话进行会员信息查询。5、退出会员管理系统。二、思路分析根据超市会员管理系统功能需求,我们可以将系统设计如下:1、定义一个函数用于输出超市会员管理系统的操作菜单。2、编写超市会员管理系统的主函数,用于调用各个子函数,完成对系统功能的选择,控制整个程序的流程。3、定义一个函数用于添加会员信息功能,包括姓名、性别、手机号等信息,使用字典保存单个会员的信息,并将其添加到会员列表中,在这个列表中保存了所有的会员。4、定义一个函数用于修改会员信息功能,在该函数中,可以调用查询会员信息函数,根据提示输入会员信息,找到对应会员后,进行修改,包括姓名、性别或手机号。5、定义一个函数用于删除会员信息功能,在该函数中,可以调用查询会员信息函数,根据提示输入会员信息,包括姓名或手机号,找到对应会员后,进行删除。6、定义一个函数用于查询会员信息功能,在该函数中,根据提示输入会员信息,包括姓名或手机号,找到对应的会员信息并显示。函数的基本用法033、怎么才能学好Python安全编程?有个商店卖苹果,苹果的单价为5.8元/斤,共有3位顾客前来购买,第1个顾客买了2.3斤,第2个顾客买了3.1斤,第3个顾客买了5.4斤。请你计算每位顾客需要支付多少钱?2、为什么要学习Python?三、函数的基本用法a=5.8first=a*2.3second=a*3.1third=a*5.4print(f'第1位顾客需支付{first}')print(f'第2位顾客需支付{second}')print(f'第3位顾客需支付{third}')运行结果如下:第1位顾客需支付13.339999999999998第2位顾客需支付17.98第3位顾客需支付31.323、怎么才能学好Python安全编程?像这种需要在程序中重复执行同一任务时,可以使用函数来解决。将整块代码中具有独立功能的代码块组织成一个小模块,这样既可以提高编写的效率,提高代码的重用率,又能节省空间,保持代码的一致性,这个小模块就是函数。在Python语言中,函数可以分为以下3类:(1)内置函数。内置函数是系统自带的函数,不需要用户去定义,直接可以使用。(2)系统函数。系统函数也是Python内部自带的函数,只不过它的调用者不是用户,而是系统本身。(3)自定义函数。自定义函数是用户根据实际需要,来自行创建的,具有实现某种功能的函数,使用def关键字自定义函数。2、为什么要学习Python?三、函数的基本用法3、怎么才能学好Python安全编程?1.函数的定义Python中定义函数需要使用保留字def,函数定义的格式如下:def函数名([参数列表]):

函数体

[return返回表达式或值]2、为什么要学习Python?三、函数的基本用法在Python中使用自定义函数,需要遵循以下规则:(1)函数通过def关键字开头,def后面跟的是函数名和圆括号“()”。(2)圆括号里用于定义参数,在定义函数时的参数叫形参,调用函数时的传递的值叫实参。对于有多个参数的,参数之间用逗号“,”隔开。函数可以没有参数,但圆括号不可缺少。(3)圆括号后面必须要加上冒号“:”。接下来的是函数体,需要缩进。(4)函数的第一行语句可以用于存放函数说明。(5)函数的返回值使用return语句来实现。一个函数体中可以有一个或多个return语句,但是一旦执行了第一条return语句,该函数将立即终止。如果没有return语句,函数执行完毕后返回结果为None。defcount(i,price,amount):#定义一个函数count

print(f'第{i}位顾客需支付{price*amount}')3、怎么才能学好Python安全编程?2.函数的调用定义函数之后,就相当于有了一段具有特定功能的代码,但这段代码并不会执行,要想让这些代码能够执行,就需要调用函数。要调用一个函数,需要知道函数的名称和参数。需要注意的是在函数定义之前,Python是不允许调用该函数的。调用函数时,如果传入的参数数量不对,会提示“ValueError”错误。2、为什么要学习Python?三、函数的基本用法defcount(i,price,amount):#定义一个函数countprint(f'第{i}位顾客需支付{price*amount}')count(1,5.8,2.3)#调用count函数,将1,5.8,2.3分别传给参数i,price,amountcount(2,5.8,3.1)count(3,5.8,5.4)运行结果如下:第1位顾客需支付13.339999999999998第2位顾客需支付17.98第3位顾客需支付31.323、怎么才能学好Python安全编程?3.函数的参数Python的函数定义很简单却很灵活,尤其是参数的使用。除了函数的必选参数,还有默认参数、位置参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。(1)必需参数必需参数是指函数要求传入的参数,调用时必须以正确的顺序传入,并且调用时实参的数量必须和定义函数时形参的数量保持一致,否则就会出现错误。2、为什么要学习Python?三、函数的基本用法defcount(i,price,amount):#定义一个函数countprint(f'第{i}位顾客需支付{price*amount}')count(1,5.8,2.3)#调用count函数,将1,5.8,2.3分别传给参数i,price,amountcount(2,5.8,3.1)count(3,5.8,5.4)3、怎么才能学好Python安全编程?(2)默认参数默认参数是指在定义函数时给形参设置了默认值,在调用函数时,如果没有给该参数传递值,则函数就会使用默认值。默认参数的格式如下:def函数名(参数=值)2、为什么要学习Python?三、函数的基本用法defcount(i,price,amount=3.1):#定义一个函数countprint(f'第{i}位顾客需支付{price*amount}')count(1,5.8,2.3)#调用count函数,给amount传值count(2,5.8)#调用count函数,amount使用默认值3.1运行结果如下:第1位顾客需支付13.339999999999998第2位顾客需支付17.98需要注意的是,默认参数的位置必须在必需参数的后面,也就是在声明函数形参时,先声明没有默认值的形参,再声明有默认值的形参,否则Python就会报语法错误。默认参数一定要用不可变对象,如果是可变对象,程序运行就会出现逻辑错误。3、怎么才能学好Python安全编程?(3)关键字参数必需参数和默认参数都属于位置参数,是通过位置从左至右依次进行匹配的,因此对参数的位置和个数都要有严格的要求。Python中还有一种是通过参数名称来匹配的,这就是关键字参数。关键字参数是指如果函数有多个参数,在调用时可以通过参数名来对参数进行传值,这样就不必担心参数的位置顺序了,从而提高了程序的可读性。2、为什么要学习Python?三、函数的基本用法defcount(i,price,amount):#定义一个函数countprint(f'第{i}位顾客需支付{price*amount}')count(i=1,price=5.8,amount=2.3)#调用count函数,按关键字传值count(price=5.8,amount=2.3,i=2)#调用count函数,按关键字传值,不必担心参数的位置运行结果如下:第1位顾客需支付13.339999999999998第2位顾客需支付13.3399999999999983、怎么才能学好Python安全编程?(4)匿名函数函数定义的另一种方法是使用lambda来创建函数。lambda的主体是一个表达式,而不是一个代码块。lambda函数拥有自己的命名空间,并且不能访问自己参数列表之外或全局命名空间中的参数。lambda用来编写简单的函数,而def定义的函数常用来处理更强大的任务。lambda函数的语法结构如下:lambda[参数1[,参数2,…,参数n]]:表达式2、为什么要学习Python?三、函数的基本用法count=lambdai,price,amount:print(f'第{i}位顾客需支付{price*amount}')count(1,5.8,2.3)#调用count函数count=lambdai,price,amount:print(f'第{i}位顾客需支付{price*amount:.2f}')count(2,5.8,2.3)#调用count函数运行结果如下:第1位顾客需支付13.339999999999998第2位顾客需支付13.34实现项目043、怎么才能学好Python安全编程?运行超市会员管理系统,首先将进入主功能菜单选择界面,这里列出了系统的全部功能,用户可以根据需要输入要执行功能对应的数字编号,程序根据用户输入的数字编号,调用不同的函数,进入相应的子功能。具体数字表示的功能如下表所示。2、为什么要学习Python?四、实现项目编号功能0退出系统1添加会员信息,调用insert()函数2查找会员信息,调用search()函数3修改会员信息,调用modify()函数4删除会员信息,调用delete()函数5显示会员信息,调用show()函数表1功能选择菜单所对应的功能序号函数名功能1main()主函数,用于调用各个子函数2menu()功能菜单显示函数,用于显示功能菜单选择界面3insert()添加会员信息4search()查找会员信息5modify()修改会员信息6delete()删除会员信息7show()显示会员信息表2超市会员管理系统定义函数及功能说明3、怎么才能学好Python安全编程?首先需要思考用什么方式来保存会员的详细信息?再用什么方式来保存全部会员?2、为什么要学习Python?四、实现项目通过观察我们可以使用字典来保存会员详细信息,这样在后续使用时,可以通过字典中的键来访问对应的值。例如:dict={'姓名':'张三','性别':'女'},在访问时可以使用dict['性别']来得到值为“女”。为了便于会员的添加、删除等操作,我们可以通过列表来保存每个会员信息,可以通过列表的遍历方便的查询列表元素。例如:list=[{'姓名':'张三','性别':'女'},{'姓名':'李四','性别':'男'}]。这时如果我们要查询列表中是否存在姓名等于李四的会员时可以通过for循环来遍历列表,使用if语句来判断姓名是否等于李四。3、怎么才能学好Python安全编程?1.编写main()函数2、为什么要学习Python?四、实现项目defmain():flag=True#定义一个变量用于标记是否退出系统title='LMT'#定义一个变量用于存放超市名globallist_nem#定义全局变量list_nem,用于存放会员的全部信息list_nem=[]#定义空列表whileflag:opp_num=menu(title)#功能显示菜单,并可以传值超市名ifopp_num==1:insert()#调用insert()函数,添加会员信息elifopp_num==2:search()#调用search()函数,查找会员信息elifopp_num==3:modify()#调用modify()函数,修改会员信息elifopp_num==4:delete()#调用delete()函数,删除会员信息elifopp_num==5:show()#调用show()函数,显示会员信息elifopp_num==0:#退出程序print(f'您已退出{title}超市会员管理系统,感谢您的使用!')flag=False3、怎么才能学好Python安全编程?1.编写main()函数2、为什么要学习Python?四、实现项目创建程序入口,然后调用主函数,代码如下:if__name__=='__main__':main()3、怎么才能学好Python安全编程?2.显示主菜单2、为什么要学习Python?四、实现项目defmenu(title):print(f'''----------欢迎使用{title}超市会员管理系统----------|------------功能菜单-----------|1.添加会员信息2.查找会员信息3.修改会员信息4.删除会员信息5.显示会员信息0.退出系统-------------------------------''')option=int(input('请输入菜单编号:'))returnoption3、怎么才能学好Python安全编程?3.查找会员信息根据前面的分析,会员信息是以字典的方式保存在列表中,要查找会员信息,也就要通过遍历列表,将列表中的字典元素与会员卡号或联系电话进行比对。这里会出现以下3种情况:1、列表中没有任何元素,也就是还没添加任何会员的空列表;2、通过遍历会员列表,找到对应的元素;3、遍历完会员列表,扔未发现符合查找条件的会员信息。2、为什么要学习Python?四、实现项目3、怎么才能学好Python安全编程?3.查找会员信息2、为什么要学习Python?四、实现项目defsearch():kahao=input('请输入会员卡号:')phone=input('请输入联系电话:')#判断list_nem列表中是否存在会员,如果不存在,直接返回标记值、会员卡号和联系电话。#如果存在会员,则判断输入的卡号或联系电话是否存在于list_nem列表中。#如果输入的卡号或联系电话存在,则显示该会员存在!并显示会员信息。否则,则调用insert()函数,添加会员。iflen(list_nem)==0:return0,kahao,phone#如果会员列表中没有会员信息,则返回标记值、会员卡号、联系电话else:foriinlist_nem:#遍历会员列表ifkahao==i['卡号']orphone==i['联系电话']:#判断卡号或联系电话是否存在print('该会员存在:')print(i)#显示该会员信息return1,list_nem.index(i)#返回标记值、列表中该元素的索引值breakelse:return0,kahao,phone#如果找不到该会员信息,则返回标记值、会员卡号、联系电话3、怎么才能学好Python安全编程?4.添加会员信息2、为什么要学习Python?四、实现项目definsert():i_s_result=search()#调用search()函数,查找会员信息ifi_s_result[0]==0:#通过search()函数返回值,判断该会员是否存在,不存在,则添加会员信息ifi_s_result[1]=='':#如果查找会员信息时没有输入卡号,则输入卡号kahao=input('请输入会员卡号:')else:#如果查找会员信息时有输入卡号,则把输入的卡号赋值给变量kahaokahao=i_s_result[1]ifi_s_result[2]=='':#如果查找会员信息时没有输入联系电话,则输入联系电话phone=input('请输入联系电话:')else:#如果查找会员信息时有输入联系电话,则把输入的卡号赋值给变量phonephone=i_s_result[2]name=input('请输入会员姓名:')sex=input('请输入会员性别:')birthday=input('请输入出生日期:')3、怎么才能学好Python安全编程?4.添加会员信息2、为什么要学习Python?四、实现项目balance=float(input('请输入充值金额:'))vip_level=input('请输入会员级别:')dict={}#定义一个字典用于存放每个会员的详细信息dict['卡号']=kahaodict['姓名']=namedict['性别']=sexdict['出生日期']=birthdaydict['联系电话']=phonedict['余额']=balancedict['会员级别']=vip_levellist_nem.append(dict)#将每个会员的详细信息作为一个元素添加到list_nem列表中print(dict)ask=input('是否继续添加会员:(Y/N)')ifask=='Y'orask=='y':insert()3、怎么才能学好Python安全编程?5.修改会员信息修改会员信息的思路与添加会员信息基本相同,通过调用search()函数,判断该会员是否存在。如果存在,则返回标记值和列表中该元素的索引值。modify()函数可以通过索引值找到会员列表中对应的字典元素,通过修改字典元素的值实现会员信息的修改。2、为什么要学习Python?四、实现项目defmodify():m_s_result=search()ifm_s_result[0]==1:#通过search()函数返回值,判断该会员是否存在,存在,则修改会员信息i_index=m_s_result[1]#通过search()函数返回值中的列表索引值赋值给变量i_indexask=input('是否修改该会员信息(Y/N):')ifask=='Y'orask=='y':name=input('请输入会员姓名:')orlist_nem[i_index]['姓名']#如果没有输入时,则使用列表字典元素中对应键的值sex=input('请输入会员性别:')orlist_nem[i_index]['性别']birthday=input('请输入出生日期:')orlist_nem[i_index]['出生日期']3、怎么才能学好Python安全编程?5.修改会员信息修改会员信息的思路与添加会员信息基本相同,通过调用search()函数,判断该会员是否存在。如果存在,则返回标记值和列表中该元素的索引值。modify()函数可以通过索引值找到会员列表中对应的字典元素,通过修改字典元素的值实现会员信息的修改。2、为什么要学习Python?四、实现项目balance=input('请输入充值金额:')orlist_nem[i_index]['余额']vip_level=input('请输入会员级别:')orlist_nem[i_index]['会员级别']list_nem[i_index]['姓名']=namelist_nem[i_index]['性别']=sexlist_nem[i_index]['出生日期']=birthdaylist_nem[i_index]['余额']=float(balance)list_nem[i_index]['会员级别']=vip_levelprint(f'{name}的会员信息修改已完成!')print(list_nem[i_index])else:print('该会员不存在!')3、怎么才能学好Python安全编程?6.删除会员信息删除会员信息的思路也是通过调用search()函数,判断该会员是否存在。如果存在,则返回标记值和列表中该元素的索引值。delete()函数可以通过索引值找到会员列表中对应的字典元素,通过pop(index)方法实现会员信息的删除。2、为什么要学习Python?四、实现项目defdelete():d_s_result=search()ifd_s_result[0]==1:#通过search()函数返回值,判断该会员是否存在,存在,则删除会员信息i_index=d_s_result[1]#通过search()函数返回值中的列表索引值赋值给变量i_indexask=input('是否删除该会员信息(Y/N):')ifask=='Y'orask=='y':list_nem.pop(i_index)print('会员信息删除成功!')else:print('该会员不存在!')3、怎么才能学好Python安全编程?7.显示会员信息删除会员信息的思路是show()函数询问是否显示全部会员信息,如果是,则遍历会员列表并输出,也可以直接输出会员列表;如果用户选择的是否,那么则通过调用search()函数,显示该会员信息。2、为什么要学习Python?四、实现项目defshow():ask=input('是否显示全部会员信息(Y/N):')ifask=='Y'orask=='y':foriinlist_nem:#遍历输出全部会员信息print(i)else:s_s_result=search()ifs_s_result[0]==0:print('该会员不存在!')THANKSLOGO程序设计基础——文件和目录简单易学易读易维护开源

可移植性

可扩展性

丰富的库

Python目录CONTENTS项目描述01思路分析02文件操作03目录操作04实现项目05项目描述01一、项目描述小明是某公司的计算机运维部员工,他每天的工作内容如下:1、检查某目录及子目录下所有含有A内容的.txt文件,复制到指定目录下,并将在原文件名末尾加上“_B”,如原文件名为“abc.txt”,修改后的文件名为“abc_B.txt”。2、检查某目录及子目录下所有文件是否被修改。3、删除指定目录及子目录下的重复文件。请你帮助小明编写相关的程序。思路分析02二、思路分析Python的输入语句input()函数可以实现从键盘输入数据,输出语句print()函数可以实现将数据输出到屏幕上,但是当每次运行结束后,运行结果就会被“清空”,再次运行程序时需要重新输入数据或重新输出结果。程序运行需要的数据不仅可以来源于键盘输入,还可以来自文件,程序的运行结果不仅可以输出到屏幕上,还可以保存到文件中。获取某目录及子目录下所有的.txt文件,如果文件不大,则直接打开文件,如果文件较大,则按行或指定字节读取,判断是否有含A的内容,如果文件中含有A的内容,将其复制到指定目录中,新的文件的文件名在原文件名末尾加上“_B”。将目录及子目录中的文件进行md5加密并写入到文件中,由于文件被修改后其MD5值也会改变,所以在需要检查时,只需要判断MD5值是否改变,就可以用来判断一个文件是否被修改过。遍历某目录及子目录下,得到文件列表,使用列表中的每一个文件与列表中其他文件进行比较,如果文件相同即可删除重复文件。文件操作033、怎么才能学好Python安全编程?1.文件的打开在Python中,可以使用open()方法来打开文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出OSError。语法格式如下:open(文件名[,访问模式])2、为什么要学习Python?三、文件操作序号访问模式描述1r默认只读模式。打开文件,文件指针定位在开头。2w可写模式打开文件。如果文件存在则覆盖,文件不存在则创建文件。3a追加模式打开文件。如果文件存在指针定位文件结尾,文件不存在则创建文件并写入。4rb以二进制格式只读模式打开文件。文件指针定位在开头。通常用于处理声音、图像等文件。5wb以二进制格式可写模式打开文件。如果文件存在则覆盖,文件不存在则创建文件。通常用于处理声音、图像等文件。6ab以二进制格式追加模式打开文件。如果文件存在指针定位文件结尾,文件不存在则创建文件并写入。通常用于处理声音、图像等文件。7r+打开一个文件用于读写。文件指针将会放在文件的开头8w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,则创建新文件9a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,则创建新文件用于读写10rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。11wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。12ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。3、怎么才能学好Python安全编程?2.文件的关闭使用open()方法一定要保证关闭文件对象,即调用close()方法。凡是打开的文件,切记要使用close()方法将其关闭。虽然文件会在程序退出后自动关闭,但是考虑到数据的安全性,建议还是要养成该习惯,打开的文件在用完后都需关闭。示例1:使用open()方法打开文件“user1.txt”。file=open('user1.txt')file.close()这里使用的open()方法中没有给出访问模式,因此使用默认只读模式。如果打开的文件不存在,则会抛出FileNotFoundError。2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?2.文件的关闭示例2:使用open()方法打开文件“d:\user1.txt”,若文件不存在,则创建文件。#可写模式打开文件。如果文件存在则覆盖,文件不存在则创建文件。file=open('d:/user1.txt','w')file.close()注意:写路径时要注意斜杠问题,若路径和文件名为“d:\user1.txt”,应写成“d:/user1.txt”或“d:\\user1.txt”2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?3.上下文管理语句with在Python中使用open()方法打开文件后,要使用close()方法将其关闭。每次如果都按照如上最终方案去写的话,实在太繁琐。Python引入了with语句来自动帮我们调用close()方法。语法格式如下:withopen(文件名[,打开方式])as文件对象名:#通过文件对象名读写文件内容在实际程序开发中,读写文件应优先考虑使用上下文管理语句with。我们将在下面的文件读取单元使用open()、close()方法,在文件写入单元使用with,帮助大家对其有更深的了解。file=open('d:/user1.txt',’w’)file.close()withopen('d:/user1.txt',’w’)asfile:

2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?4.文件的读取Python提供了3种从文件中读取内容的方式:read()、readline()和readlines()方法。(1)read()方法read()方法用于从文件中读取指定字节数的内容,其语法格式如下:文件对象名.read([size])其中size表示要从文件中读取的数据的长度,单位为字节。如果没有指定size或size为负,则表示读取文件中的全部数据。该方法返回从文件中读取的字符串。“d:/user1.txt”文件中的内容如下:坚持以人民为中心。示例3:file=open('d:/user1.txt','r')content1=file.read(1)print(content1)file.close()2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?4.文件的读取“d:/user1.txt”文件中的内容如下:坚持以人民为中心。示例4:file=open('d:/user1.txt','r')content2=file.read(-1)print(content2)file.close()示例5:file=open('d:/user1.txt','r')content3=file.read()print(content3)file.close()2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?示例6:“d:/user1.txt”文件中的内容如下:坚持以人民为中心。file=open('d:/user1.txt','r')content1=file.read(1)print(content1)print('*'*15)content2=file.read(-1)print(content2)print('*'*15)content3=file.read()print(content3)print('*'*15)file.close()2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?4.文件的读取Python提供了3种从文件中读取内容的方式:read()、readline()和readlines()方法。(2)readline()方法使用readline()方法可以读取文件中的行,包括换行符“\n”。每执行一次readline()方法就可以从文件中读取一行。其语法格式如下:文件对象名.readline([size])其中size为从文件中读取的字节数,并不是读取的行数,这里需要特别注意。2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?(2)readline()方法示例7:file=open('d:/user1.txt','r')content1=file.readline()print(content1)print('*'*15)content2=file.readline(10)print(content2)print('*'*15)content3=file.readline()print(content3)print('*'*15)file.close()2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?4.文件的读取Python提供了3种从文件中读取内容的方式:read()、readline()和readlines()方法。(3)readlines()方法使用readlines()方法可以读取文件中的所有行,返回为列表,每一行的内容作为列表中的一个元素。其语法格式如下:文件对象名.readlines()示例8:使用readlines()读取“d:/user1.txt”文件。file=open('d:/user1.txt','r')lines=file.readlines()print(lines)print('*'*15)forlineinlines:print(line)file.close()2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?5.文件的写入Python提供了2种从文件中读取内容的方式:write()、writelines()方法。(1)write()方法

write()方法用于向文件中写入指定字符串,其语法格式如下:文件对象名.write(str)其中str表示要向文件中写入的指定字符串。示例10:新建test1.txt文件,并写入字符串“始终坚持全心全意为人民服务的根本宗旨”。withopen('test2.txt','w')aswritefile: writefile.write('始终坚持全心全意为人民服务的根本宗旨’)withopen('test2.txt','w',encoding='utf-8')aswritefile:

writefile.write('始终坚持全心全意为人民服务的根本宗旨')2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?5.文件的写入Python提供了2种从文件中读取内容的方式:write()、writelines()方法。(1)write()方法示例11:向文件中写入多行字符串。withopen('test2.txt','w',encoding='utf-8')aswritefile: writefile.write('始终坚持\n') writefile.write('全心全意\n') writefile.write('为人民服务的根本宗旨\n')2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?5.文件的写入Python提供了2种从文件中读取内容的方式:write()、writelines()方法。(2)writelines()方法

writelines()方法用于向文件中写入一序列的字符串,其语法格式如下:文件对象名.writelines(seq)其中seq表示要向文件中写入的字符串序列。示例12:使用writelines()方法向'test2.txt'文件中追加以下内容:坚持以人民为中心,一切为了人民、一切依靠人民list_w=['坚持以人民为中心,','一切为了人民、','一切依靠人民']#定义列表并保存要写入文件的内容withopen('test2.txt','a',encoding='utf-8')aswritefile:#以追加方式打开文件writefile.writelines(list_w)#向文件中追加字符串序列2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?5.文件的写入Python提供了2种从文件中读取内容的方式:write()、writelines()方法。(2)writelines()方法list_1=[1,2,3,4,5]

list_2=list(map(str,list_1))

withopen('test2.txt','w',encoding='utf-8')aswritefile:

writefile.writelines(list_2)

#123452、为什么要学习Python?三、文件操作list_1=[1,2,3,4,5]

list_2=list(map(str,list_1))

t='\n'.join(list_2)

withopen('test2.txt','w',encoding='utf-8')aswritefile:

writefile.writelines(t)

运行结果:1

2

3

4

53、怎么才能学好Python安全编程?6.文件的定位让我们先来看一段程序:示例13:withopen('test2.txt','r',encoding='utf-8')asfile:r1=file.read()print(r1)r2=file.read()print(r2)2、为什么要学习Python?三、文件操作当读取文件内容时,并不能重复读取,第一次使用read()方法返回了文件内容,而第二次使用read()方法却返回了空。这是什么原因呢?原来这和文件指针有关,当对文件操作时,文件内部会有一个文件指针来定位当前位置,随着文件读写操作而移动。当使用‘r’方式打开文件时,文件指针在起始位置,使用read()方法则读取了整个文件内容,这时文件指针就在末尾,第二次使用read()方法读取文件内容时就从文件末尾开始读取,所以就读取不到任何内容了。那么想要重复读取文件内容,只要控制文件指针就可以了。3、怎么才能学好Python安全编程?6.文件的定位(1)获取当前读写位置通过调用tell()方法可以获取文件指针当前位置,即文件指针当前距离文件开头的位置。其语法格式如下:文件对象名.tell()示例14:使用tell()方法获取文件当前的位置。withopen('test2.txt','r',encoding='utf-8')asfile:r1=file.tell()#获取打开文件时文件指针的位置

print(r1)file.read(1)r2=file.tell()#获取读取1个字节后文件指针的位置

print(r2)file.read(2)r3=file.tell()#获取继续读取2个字节后文件指针的位置

print(r3)2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?6.文件的定位(2)定位到指定位置通过调用seek()方法可以将文件指针定位到指定位置。可以通过设置文件新的当前位置,实现在文件中跳转,完成对文件的任意访问。其语法格式如下:文件对象名.seek(offset[,whence])其中,offset表示的是字节数,也就是偏移量。whence表示起始点,即位移量的参考点,默认值为0。whence有3个取值:①0表示文件开始处,默认值为0。这时的偏移量offset必须是非负值。②1表示文件的当前位置,偏移量offset可以是正值也可以是负值。③2表示文件结尾处,偏移量offset可以是正值也可以是负值。2、为什么要学习Python?三、文件操作3、怎么才能学好Python安全编程?6.文件的定位(2)定位到指定位置示例15:#用二进制写模式打开user.txt文件file=open('test3.txt','wb')file.write(b'12345')#设置文件当前位置file.seek(-3,2)file.write(b'abc')file.close()file=open('test3.txt','r')content=file.readlines()print('返回偏移后文件内容:',content)file.close()2、为什么要学习Python?三、文件操作withopen('test1.txt','wb')asfile:

file.write(b'12345')

#print(file.tell())

file.seek(4,2)

print(file.tell())

file.seek(4,1)

print(file.tell())

file.seek(4,0)

print(file.tell())9134目录操作043、怎么才能学好Python安全编程?文件有两个关键属性:路径和文件名。路径指明了文件在磁盘上的位置。在Python中对目录的操作主要有获取当前目录、改变当前目录、创建和删除目录、遍历目录等。2、为什么要学习Python?四、目录操作序号方法功能说明1os.rename(src,dst)重命名(从src到dst)文件或目录,可以实现文件的移动,若目标文件已存在,则抛出异常。2os.remove(path)删除路径为path的文件,如果path是目录,则抛出异常。3os.getcwd()返回当前工作目录。4os.chdir(path)将path设为当前工作目录。5os.mkdir(path[,mode])创建目录,要求上级目录必须存在。参数mode为创建目录的权限,默认创建的目录权限为可读可写可执行。6os.makedirs(path)创建目录,上级目录可以不存在,在创建目录时可以一次创建多级目录。7os.rmdir(path)删除path指定的目录,要求目录必须为空目录,否则抛出异常。8os.removedirs(path)删除多级目录,目录中不能有文件。9os.listdir(path)返回path目录下的文件和目录列表3、怎么才能学好Python安全编程?示例16:importospath1=os.getcwd()print(path1)os.mkdir('test1')os.makedirs('test2/tmp')os.chdir('test2/tmp')path2=os.getcwd()print(path2)withopen('test3.txt','w',encoding='utf-8')asfile:

file.write(path2)os.rename('test3.txt','test2.txt')os.rename('test2.txt',path1+'/test1/test1.txt')os.remove(path1+'/test1/test1.txt')os.makedirs('re_dir/tmp')os.removedirs('re_dir/tmp')t=os.listdir(path1)print(t)2、为什么要学习Python?四、目录操作实现项目053、怎么才能学好Python安全编程?1、遍历某目录及子目录,获得文件列表2、为什么要学习Python?五、实现项目importos#导入os模块path='test'foriinos.walk(path):print(i)运行结果:('test',['tmp1','tmp2'],['t1.txt'])('test\\tmp1',['tmp1_1'],['t2.xls'])('test\\tmp1\\tmp1_1',[],[])('test\\tmp2',[],['t3.txt','t4.txt'])示例18:遍历获取指定目录及子目录中文件列表。importos#导入os模块path='test'forroot,dirs,filesinos.walk(path):print(files)运行结果:['t1.txt']['t2.xls'][]['t3.txt','t4.txt']3、怎么才能学好Python安全编程?2、从文件列表中筛选.txt文件要从文件列表中筛选.txt文件,可以在循环遍历时在循环体内加入if语句,使用endswith()方法判断字符串是否以指定后缀结尾,如果是则返回True,否则返回False。示例19:使用endswith()方法筛选.txt文件。importos#导入os模块path='test'forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

ifi.endswith('.txt'):#判断后缀是否为.txtprint(i)运行结果:t1.txtt3.txtt4.txt2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?2、从文件列表中筛选.txt文件由于endswith()方法只能用在字符串类型的数据上,因此需要嵌套一个for循环来遍历文件列表。如果只需获得指定目录下的文件列表,不包含子目录,也可以使用以下代码。示例20:importos#导入os模块path='test'forfilesinos.listdir(path):#遍历获得当前目录下的目录和文件列表

iffiles.endswith('.txt'):#判断后缀是否为.txtprint(files)运行结果:t1.txt2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?2、从文件列表中筛选.txt文件示例20也可以用列表表达式的方法,代码如下:importos#导入os模块path='test'li=[iforiinos.listdir(path)ifi.endswith('.txt')]print(li)2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?2、从文件列表中筛选.txt文件除了可以使用字符串的endswith()方法筛选外,也可以使用os.path.splitext(file)方法将文件名和后缀名切割开,以字符串元组形式保存。importos#导入os模块path='test'forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

file_com=os.path.splitext(i)iffile_com[1]=='.txt':#判断后缀是否为.txtprint(i)运行结果:t1.txtt3.txtt4.txt2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?2、从文件列表中筛选.txt文件Python的os.path模块提供了大量用于路径判断、文件属性获取的方法,os.path模块常用方法如下:2、为什么要学习Python?五、实现项目序号方法功能说明1os.path.abspath(path)返回给定路径的绝对路径。2os.path.split(path)将path分割成目录和文件名的二元组并返回。3os.path.splitext(path)将path分割成文件名和后缀名(扩展名)的二元组并返回。4os.path.exists(path)判断path是否存在,如果存在,返回True;如果不存在,返回False。5os.path.getsize(path)返回path文件的大小(字节)。6os.path.getatime(path)得到指定文件最后一次的访问时间。7os.path.getctime(path)得到指定文件的创建时间。8os.path.getmtime(path)得到指定文件最后一次的修改时间。9os.path.join(path1[,path2[,......]])将多个路径组合后返回3、怎么才能学好Python安全编程?3、依次打开每个文本文件,检查是否含有A内容要打开文件,就需要知道文件的路径和文件名,可以通过在示例19的基础上,把路径和文件名组合成字符串保存到新列表中。示例21:得到文本文件相对路径和文件名列表。importos#导入os模块path='test'listfile=[]forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

ifi.endswith('.txt'):#判断后缀是否为.txtlistfile.append(os.path.join(root,i))#将路径和文件名组合后添加到列表中print(listfile)运行结果:['test\\t1.txt','test\\tmp2\\t3.txt','test\\tmp2\\t4.txt']2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?3、依次打开每个文本文件,检查是否含有A内容示例22:循环遍历文本文件列表,依次打开每个文本文件,检查是否含有A内容。importos#导入os模块path='test'listfile=[]A='servers_list'forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

ifi.endswith('.txt'):#判断后缀是否为.txtlistfile.append(os.path.join(root,i))#将路径和文件名组合后添加到列表中listfile2=[]#存放含有A内容的文本文件forjinlistfile:#循环遍历文件列表

withopen(j,'r',encoding='utf-8')asfile:#以只读方式打开文件

con=file.read()#读取文件内容

ifAincon:#如果A内容存在文件中

listfile2.append(j)#将该文件路径和文件名添加到新列表中print(listfile2)2、为什么要学习Python?五、实现项目运行结果:['test\\tmp2\\t3.txt']3、怎么才能学好Python安全编程?4、复制文件并重命名shutil模块也提供了大量方法支持文件和目录操作,主要包括复制、移动、重命名、备份和删除目录等,是文件的高级操作,常用方法如表所示。2、为什么要学习Python?五、实现项目序号方法功能说明1shutil.copy(src,dst)复制文件内容及权限,如果目标文件已经存在,则抛出异常。2shutil.copy2(src,dst)复制文件内容及文件的所有状态信息,如果目标文件已经存在,则抛出异常。3shutil.copyfile(src,dst)复制文件,不复制文件属性。如果目标文件已存在则直接覆盖。4shutil.copytree(src,dst)递归复制文件内容及状态信息。5shutil.rmtree(path)递归删除目录。6shutil.move(src,dst)移动文件或递归移动目录,也可给文件和目录重命名。3、怎么才能学好Python安全编程?4、复制文件并重命名示例23:使用shutil模块的copy()方法实现复制文件并重命名。importos,shutil#导入os和shutil模块path='test'dstpath='d:/test'listfile=[]A='servers_list'forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

ifi.endswith('.txt'):#判断后缀是否为.txtlistfile.append(os.path.join(root,i))#将路径和文件名组合后添加到列表中forjinlistfile:#循环遍历文件列表

withopen(j,'r',encoding='utf-8')asfile:#以只读方式打开文件

con=file.read()#读取文件内容

ifAincon:#如果A内容存在文件中

t=j.split('\\')[-1]#从路径中获取文件名

n_c=os.path.splitext(t)#将文件名和后缀分开

dstfile=os.path.join(dstpath,n_c[0]+'_B'+n_c[1])#生成目标文件路径和文件名

shutil.copy(j,dstfile)#复制文件2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?5、检查文件是否被修改示例24:将文件路径、文件名和最后修改时间保存至一个文本文件。importos#导入os模块path='test'A='servers_list'forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

ifi.endswith('.txt'):#判断后缀是否为.txtwithopen('update.txt','a',encoding='utf-8')asfile:#以追加方式打开文件

dstpath=os.path.join(root,i)#组合文件路径和文件名

endmodidata=str(os.path.getmtime(dstpath))#得到文件最后一次修改时间,并转换为字符串型

file.write(dstpath+'|'+endmodidata+'\n')#将路径、文件名的组合和最后一次修改时间写入文件中运行结果:update.txt中的内容test\t1.txt|1630507122.7912314test\tmp2\t3.txt|1630426721.3132508test\tmp2\t4.txt|1630330352.4292882、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?5、检查文件是否被修改示例25:重新获得最后修改时间,并于update.txt中的时间进行比较。importos#导入os模块path='test'listfile=[]A='servers_list'forroot,dirs,filesinos.walk(path):#遍历获得当前目录及子目录下的目录和文件列表

foriinfiles:#遍历文件列表

ifi.endswith('.txt'):#判断后缀是否为.txtdstpath=os.path.join(root,i)#组合文件路径和文件名

endmoditime=str(os.path.getmtime(dstpath))#得到文件最后一次修改时间,并转换为字符串型

withopen('update.txt','r',encoding='utf-8')asfile:#以只读方式打开文件

forlineinfile:#按行遍历文件

ifiinline:#如果当前文件名存在于update.txt文件的遍历行

line=line.strip('\n')#去除该行的换行符

newtime=line.split('|')[-1]#切割字符串,取第2个元

温馨提示

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

最新文档

评论

0/150

提交评论