python语言实现转移/复制文件夹下特殊类文件(如随机取一定数量文件等)的方法笔记
时间:2023-04-20 14:07:00
1. 将一定比例/一定数量的文件从A文件夹中随机提取到B文件夹下(目的是随机提取一定数量的样本):
# # -*- coding:utf-8 -*- # """ # 作者:CloudSharing # 2022年7月20日11:53 # """ import os import random import shutil import time start = time.time() def CaptureRandomFile(fileDir, trainDir): pathDir = os.listdir(fileDir) # 取文件的原始路径 filenumber = len(pathDir) rate1 = 0.1 # 例如,在100个文件中随机抽取10个自定义文件比例,那就是0.1 if 100 < filenumber <= 1000: rate1 = 0.10 elif 1000 < filenumber: rate1 = 0.05 else: rate1 = 1 print(rate1) picknumber1 = int(filenumber * rate1) # 按照rate从文件夹中提取一定数量的文件 sample1 = random.sample(pathDir, picknumber1) # 随机选取picknumber数量的样本 for name in sample1: shutil.copyfile(fileDir '/' name, trainDir "\\" name) # selectFile(fileDir, trainDir) if __name__ == '__main__': fileDir = r'F:\X6_GMC' trainDir = r'F:\X6_GMC\1_SPS' CaptureRandomFile(fileDir, trainDir) print("用这个脚本的时候{}s".format(time.time() - start))
2. 实现与B文件夹中相同的文件从A文件夹转移到B文件夹(目的是替换B文件夹中的一些错误文件,特别是大量文件):
# # -*- coding:utf-8 -*- # """ # 作者:CloudSharing # 2022年7月26日12:33 # """ import os import random import shutil import time start = time.time() def CaptureRepeatFile(fileDir, targetDir): pathDir = os.listdir(fileDir) # 取文件的原始路径 path_targetDir = os.listdir(targetDir) for file_name in pathDir: if file_name in path_targetDir: shutil.copyfile(fileDir '/' file_name, targetDir "\\" file_name) else: pass # selectFile(fileDir, trainDir) if __name__ == '__main__': fileDir = r'F:\X6_GMC' targetDir = r'F:\X6_GMC\1_SPS' CaptureRepeatFile(fileDir, targetDir) print("用这个脚本的时候{}s".format(time.time() - start))
3. 将与B文件夹同名的文件从A文件夹转移到C文件夹(目的是将与B文件夹同名的文件从A文件夹中提取):
# # -*- coding:utf-8 -*- # """ # 作者:CloudSharing # 2022年7月26日15:33 # """ import os import random import shutil import time start = time.time() def CaptureRepeatFile(fileDir, targetDir, captureDir): pathDir = os.listdir(fileDir) path_targetDir = os.listdir(targetDir) path_captureDir = os.listdir(captureDir) for file_name in pathDir: if file_name in path_captureDir: shutil.copyfile(fileDir '/' file_name, targetDir "\\" file_name) else: pass # selectFile(fileDir, trainDir) if __name__ == '__main__': fileDir = r'F:\X6_GMC' targetDir = r'F:\X6_GMC\1_SPS' captureDir = r'F:\X6_GMC\AI' CaptureRepeatFile(fileDir, targetDir, captureDir) print("使用该脚本用时是{}s".format(time.time() - start))