进行单一的文件进行复制到另外一个文件中去
import os, shutil # 路径 path='E:/file' new_path='F:/NEW_FILE' for root ,dirs,files in os.walk(path): for i in range(len(files)): if (files[i][-3:] == 'jpg') or (files[i][-3:] == 'png')or (files[i][-3:] == 'PNG') or (files[i][-3:] == 'JPG'): file_path = root +'/'+files[i] new_file_path = new_path+'/'+files[i] shutil.copy(file_path,new_file_path)
进行文件下所有的图片复制(包括子文件的复制)的复制内容
from glob import glob import os, random from shutil import copyfile #文件路径 source_path=r'D:/test' target_path=r'F:/file' def getFileList(dir,Filelist): """ 获取文件夹及其子文件夹中文件列表 输入 dir:文件夹根目录 输入 ext: 扩展名 返回: 文件路径列表 """ newDir = dir if os.path.isfile(dir): if dir.endswith(".jpg") or dir.endswith(".JPG") or dir.endswith(".png") or dir.endswith(".PNG"):#图片格式,自己设置 Filelist.append(dir) elif os.path.isdir(dir): for s in os.listdir(dir): newDir=os.path.join(dir,s) getFileList(newDir, Filelist) return Filelist def copyFile(imageList1, target_path): #os.path.splitext(),返回元组,为文件名称与文件后缀格式 for item in imageList1: #将随机选中的jpg文件遍历复制到目标文件夹中 tmp=os.path.basename(item) copyfile(item, target_path+'/'+tmp) return imageList = getFileList(source_path,[]) copyFile(imageList, target_path)
最后,针对需要复制的文件含有特殊的字符名称,进行复制
import os, shutil from tqdm import tqdm # 规范化绝对路径 src_dir = os.path.abspath(r"F:/defect") dst_dir = os.path.abspath(r"E:/file") key = 'template' # 源文件夹中的文件包含字符key则复制到to_dir_path文件夹中 if not os.path.exists(dst_dir): os.makedirs(dst_dir) # print("fistr_dir is:\t{}".format(fistr_dir)) if os.path.exists(src_dir): print("src_dir_path exitst") # root 所指的是当前正在遍历的这个文件夹的本身的地址 # dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录) # files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录) for root, dirs, files in os.walk(src_dir): for file in tqdm(files): if key in file: #判断文件名称是否有关键字 # 如果需要或复制的文件不含特殊字符,就改为 if key not in tqdm(files): src_file = os.path.join(root, file) shutil.copy(src_file, dst_dir) print(src_file) print('congratulations!')