1,问题描述
希望把某一路径下面所有(包含子路径)txt,docx,doc,pdf类型的文件,全部提取出来,拷贝到指定的目录里面
左边是要拷贝的目录,右边是拷贝到的目录
2,关键点描述
分成两步:
(1)从指定目录读取所有指定类型的文件全名(路径+文件名),返回一个拷贝对象的文件list
技术点:遍历文件夹:os.walk(dirpath)
文件路径和文件名合并:os.path.join(dirpath, file)
(2)将拷贝对象文件list里面的文件依次拷贝到指定目录
技术点:文件拷贝:shutil.copy
3,代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import shutil
#对象文件的类型指定
file_type_list = ['pdf','txt','xls','xlsx','pptx']
#取得文件夹下面的所有指定类型的文件全名(路径+文件名)
def get_file_list(folder):
filelist = [] #存储要copy的文件全名
for dirpath,dirnames,filenames in os.walk(folder):
for file in filenames:
file_type = file.split('.')[-1]
if(file_type in file_type_list):
file_fullname = os.path.join(dirpath, file) #文件全名
filelist.append(file_fullname)
return filelist
#将文件list里面的文件拷贝到指定目录下
def copy_file(src_file_list, dst_folder):
print('===========copy start===========')
for file in src_file_list:
shutil.copy(file, dst_folder)
print('===========copy end!===========')
if(__name__=="__main__"):
#copy源所在目录
src_folder = r'...\srcdir' #路径最后不要加\ (填入对应的copy源路径)
#copy到的指定目录
dst_folder = r'..\dstdir' #路径最后不要加\ (填入对应的copy to路径)
#取得文件夹下所有指定类型的文件全名
filelist = get_file_list(src_folder)
copy_file(filelist, dst_folder)