import os
import shutil
def filterfile(file_dir,save_dir,suffix):
'''
该函数实现从文件夹中根据文件后缀名提取文件,并存储在新的文件夹中
file_dir指读的文件目录;save_dir为保存文件的目录
suffix用于存放打算提取文件的后缀名;
'''
if os.path.exists(save_dir):
shutil.rmtree(save_dir) #如果已经存在该文件夹,移除
if not os.path.exists(save_dir):
os.makedirs(save_dir) #如果不存在该文件夹,则创建,用于储存后续提取出来的文件
filelist = [] #存储要copy的文件全名
index = 1
for dirpath,dirnames,filenames in os.walk(file_dir):#根据路径执行树状的遍历,分别遍历根目录,根目录下的文件夹,文件夹下的文件
for file in filenames:#遍历文件夹中的文件
file_type = file.split('.')[-1]#对文件名根据.进行分隔,实现文件名,后缀名的分离
if(file_type in suffix):#下面根据后缀名是否在列表中,提取文件
file_fullname = os.path.join(dirpath, file) #文件全名
filelist.append(file_fullname)#将符合要求的文件存放在列表中
for file in filelist:
print(file)
base_name = file.split("\\")[-1]
other_name = file.split("\\")[:-1]
new_base_name = str(index) + base_name
print(type(other_name),type(base_name))
#new_file = other_name + new_base_name
print(new_base_name)
shutil.copy(file, save_dir+ "\\"+new_base_name)#将列表中的文件复制到新的文件夹
index += 1
if __name__ == '__main__':
old_path = r'C:\Users\Hopes\Desktop\课件'
new_path = r'C:\Users\Hopes\Desktop\merge3'
filterfile(old_path, new_path,['ppt'])
参考:【python学习】如何批量从文件夹中根据文件后缀名提取文件,并存储到新的文件夹_python查找指定文件名,并剪切到其它文件夹-CSDN博客
感想:学好代码的重要性