9.1选择性拷贝
编写一个程序,遍历一个目录树,查找特点扩展名的文件(诸如.pdf或.jpg)。不论这些文件的位置在哪里,将它拷贝到一个新的文件夹中。
import os,shutil for foldername,subfolders,filenames in os.walk('D:\\python\\automate_online-materials'): for filename in filenames: if filename.endswith('.pdf') or filename.endswith('.png'): print(os.path.join(foldername,filename)) shutil.copy(os.path.join(foldername,filename),'D:\\test9.1') else: continue
9.2删除不需要的文件
编写一个程序,遍历一个目录树,查找特别大的文件或文件夹,比方说,超过100MB的文件,将这些文件的绝对路径打印到屏幕上
import os,shutil for foldername,subfolders,filenames in os.walk('D:\\python\\automate_online-materials'): for filename in filenames: if os.path.getsize(os.path.join(foldername,filename))>=500000: print(os.path.join(foldername,filename)) print(os.path.getsize(os.path.join(foldername,filename)))
9.3消除缺失的编号
编写一个程序,在一个文件夹中,找到所有带制定前缀的文件,诸如spam001.txt,spam002.txt等,并定位缺失的编号(例如存在spam001.txt和spam003.txt,但不存在spam002.txt)。让该程序对所有后面的文件改名,消除缺失的编号。
import os,re,shutil num = 1 for foldername,subfolders,filenames in os.walk('D:\\test9.2'): for filename in filenames: mo = re.compile(r'spam\d{3}.*(\.\w*)$').search(filename) if mo == None: continue else: if num < 10: temp = 'spam00'+str(num)+mo.group(1) if num>=10 and num<100: temp = 'spam0'+str(num)+mo.group(1) if num>=100: temp = 'spam'+str(num)+mo.group(1) print(temp) shutil.move(os.path.join(foldername,filename),os.path.join(foldername,temp)) num=num+1