




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础——文件和目录简单易学易读易维护开源
可移植性
可扩展性
丰富的库
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个元素,也就是得到最后一次修改时间
ifendmoditime!=newtime:#如果当前修改时间与update.txt中的最后一次修改时间不一致
listfile.append(i)#将该文件名添加到列表中print(listfile)运行结果:运行该程序前,我们对t1.txt文件做了修改。['t1.txt']2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?5、检查文件是否被修改2.根据文件大小判断文件是否被修改,其实现思路如下:(1)将文件路径、文件名和文件大小保存至一个文本文件。(2)当需要检查时,遍历目录及子目录下的文件,得到文件大小,与之前保存的文件大小进行比较。从实现思路来看,基本和示例24和示例25相似。只需将代码中os.path.getmtime(dstpath)替换为os.path.getsize(dstpath)即可。3.根据文件MD5值判断文件是否被修改,其实现思路如下:(1)将目录及子目录中的文件进行md5加密并写入到文件中。(2)当需要检查时,判断md5值是否变化。示例26:importosimporthashlib#coding:GBKdir_path=r'D:\test'file_lst=[]2、为什么要学习Python?五、实现项目#将目录及子目录中的文件进行md5加密并写入到文件中#文件被修改后其MD5值也会改变,所以可以用来判断一个文件是否被修改过defGetFileMd5(filename):myhash=hashlib.md5()withopen(filename,'rb')asf:#防止文件太大,内存不足
whileTrue:buf=f.read(4096)ifnotbuf:breakmyhash.update(buf)f.close()returnfilename,myhash.hexdigest()#遍历目录及子目录下的文件路径list_md5=[]withopen('md5.txt','a')asfmd5:forfilepathinfile_lst:fmd5.writelines(''.join(GetFileMd5(filepath)))fmd5.write('\n')fmd5.close()3、怎么才能学好Python安全编程?6、删除重复文件语法格式如下:filecmp.cmp(f1,f2[,shallow])另外,也可以比较两个目录内指定文件是否相同。语法格式如下:filecmp.cmpfiles(dir1,dir2,common[,shallow])比较两个目录夹内指定文件是否相同。参数dir1,dir2指定要比较的目录,参数common指定要比较的文件名列表。函数返回包含3个list元素的元组,分别表示匹配、不匹配以及错误的文件列表。错误的文件指的是不存在的文件,或文件被琐定不可读,或没权限读文件,或者由于其他原因访问不了该文件。2、为什么要学习Python?五、实现项目3、怎么才能学好Python安全编程?6、删除重复文件示例27:importosimportglobimportfilecmpimporthashlib#coding:GBKdir_path=r'D:\test'file_lst=[]2、为什么要学习Python?五、实现项目#遍历目录和子目录,得到文件列表foriinglob.glob(dir_path+'/**/*',recursive=True):ifos.path.isfile(i):file_lst.append(i)#检查不同目录中相同的文件forfile1infile_lst:forfile2infile_lst:iffile1!=file2andos.path.exists(file1)andos.path.exists(file2):iffilecmp.cmp(file1,file2):os.remove(file2)THANKSLOGO程序设计基础——错误和异常简单易学易读易维护开源
可移植性
可扩展性
丰富的库
Python目录CONTENTS项目描述01语法错误的识别与处理02捕捉异常03异常处理04思政导入2004年8月17日在美国加州圣巴巴拉召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家EliBiham和AntoineJoux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告。在会场上,当她公布了MD系列算法的破解结果之后,报告被激动的掌声打断。王小云教授的报告轰动了全场,得到了与会专家的赞叹。报告结束时,与会者长时间热烈鼓掌,部分学者起立鼓掌致敬,这在密码学会议上是少见的盛况。项目描述01一、项目描述在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。Python内置了一套异常处理机制,来帮助我们进行错误处理。语法错误的识别与处理02二、语法错误的识别与处理语法错误也称为解析错误,Python是一门先编译后解释的语言。在编译时,如果程序中存在语法错误,Python编译器就会显示文件名、行号等信息,并使用^标记在该行程序中检测出错的位置。i=1whileTrueidiom=input("请输入第"+str(i)+"个成语:")二、语法错误的识别与处理对于这类语法错误的发现还是比较容易的,因为Python编译器直接告诉了我们错误的位置,我们只需要在该位置改正这个语法错误就可以了。但是有时编译器告诉我们的语法错误不是那么容易发现的,根据提示的行号与标记也是找不到语法错误的地方。importos#user.txt为存在于当前目录的一个文件print(os.path.exists(('user.txt'))#判断目标是否存在print(os.path.isdir('user.txt'))#判断目标是否目录print(os.path.isfile('user.txt'))#判断目标是否文件捕捉异常033、怎么才能学好Python安全编程?1.
ZeroDivisionError异常2、为什么要学习Python?三、捕捉异常10*(1/0)3、怎么才能学好Python安全编程?2.
NameError异常2、为什么要学习Python?三、捕捉异常4+idiom*33、怎么才能学好Python安全编程?3.
TypeError异常2、为什么要学习Python?三、捕捉异常'1'+13、怎么才能学好Python安全编程?4.
IndexError异常2、为什么要学习Python?三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年临时电工临时用工安全责任书
- 二零二五年度危险品大件物品运输合同范本
- 二零二五年度个人车辆借用安全责任协议书
- 二零二五年SAP Help Portal服务合同审核指南
- 二零二五版二手车鉴定评估及买卖合同
- 2025版电商企业客服人员劳务派遣合作协议
- 2025版无人机研发中心员工聘用合同范本
- 2025年度园林景观承包安全责任书
- 2025年度绿色建筑劳务项目内部承包合同
- 2025年度文化展览场地承包使用权合同
- 大数据与会计专业的毕业论文
- 物业入室维修培训
- 失智老人护理课件
- 亲密关系中的冲突解决策略-洞察及研究
- 2024年电子商务专业群商务数据分析与应用专业人才培养方案修订调研报告
- 公司私人手机管理制度
- 台球厅员工管理规章制度
- (2025)《公共基础知识》试题库和答案
- GB/T 29188-2022品牌价值评价多周期超额收益法
- 2025年世界防治结核病日知识竞赛考试题库(300题含答案)
- 电玩城会员管理制度
评论
0/150
提交评论