python将多个文件夹下的文件复制到一个文件夹 但是这种情况只能处理两个层级的文件夹 # coding=utf-8 import os import shutil #目标文件夹,此处为相对路径,也可以改为绝对路径 # determinatio
python将多个文件夹下的文件复制到一个文件夹
但是这种情况只能处理两个层级的文件夹
import os
import shutil
#目标文件夹,此处为相对路径,也可以改为绝对路径
# determination = 'target/'
determination = r'C:\Users\carry\Desktop\target'
if not os.path.exists(determination):
os.makedirs(determination)
#源文件夹路径
# path = r'E:\数据集\CUB_200_2011\CUB_200_2011\images'
path = r'C:\Users\carry\Desktop\test'
folders= os.listdir(path)
# print(folders)
for folder in folders:
dir = path + '\\' + str(folder)
files = os.listdir(dir)
print(files)
for file in files:
source = dir + '\\' + str(file)
print(source)
deter = determination +'\\' + str(file)
print(deter)
shutil.copyfile(source, deter)
从指定目录下遍历指定后缀的所有文件,然后拷贝到指定文件夹
#!/usr/bin/env python# -*- coding:utf-8 -*-
import os
import shutil
#对象文件的类型指定
file_type_list = ['pdf','txt','xls','xlsx','pptx','doc']
src_folder = r'C:\Users\carry\Desktop\test001'
#取得文件夹下面的所有指定类型的文件全名(路径+文件名)
# os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。
# for dirpath,dirnames,filenames in os.walk(folder):
# print(dirnames)
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!===========')
# filelist = get_file_list(src_folder)
if(__name__=="__main__"):
#copy源所在目录
src_folder = r'C:\Users\carry\Desktop\test001' #路径最后不要加\
#copy到的指定目录
dst_folder = r'C:\Users\carry\Desktop\target' #路径最后不要加\
#取得文件夹下所有指定类型的文件全名
filelist = get_file_list(src_folder)
copy_file(filelist, dst_folder)