【python实战】 从指定目录下遍历指定后缀的所有文件,然后拷贝到指定文件夹

1,问题描述
希望把某一路径下面所有(包含子路径)txt,docx,doc,pdf类型的文件,全部提取出来,拷贝到指定的目录里面
左边是要拷贝的目录,右边是拷贝到的目录
【python实战】 从指定目录下遍历指定后缀的所有文件,然后拷贝到指定文件夹_第1张图片
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)

你可能感兴趣的:(02.Python(基础知识))