python语言实现转移/复制文件夹下特殊类文件(如随机取一定数量文件等)的方法笔记

        从大量文件中提取或者转移一定数量的文件到指定路径,有以下三种方法实现:

 1. 从A文件夹(fileDir)中随机提取一定比例/一定数量的文件复制到B文件夹(trainDir)下(目的是随机抽取一定数量样本):

# # -*- coding:utf-8 -*-
# """
# 作者:CloudSharing
# 邮箱:zhaoc_chem@126.com
# 日期:2022年07月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. 实现从A文件夹(fileDir)向B文件夹(targetDir)转移与B文件夹中相同的文件(目的是替换B文件夹中部分错误文件,特别针对大数量文件出现错误的情况):

# # -*- coding:utf-8 -*-
# """
# 作者:CloudSharing
# 邮箱:zhaoc_chem@126.com
# 日期:2022年07月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. 实现从A文件夹(fileDir)向C文件夹(targetDir)转移与B文件夹(captureDir)同名的文件(目的是从A文件夹提取与B文件夹下相同名字的文件放在另外文件夹下):

# # -*- coding:utf-8 -*-
# """
# 作者:CloudSharing
# 邮箱:zhaoc_chem@126.com
# 日期:2022年07月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))

4. 实现从A文件夹(fileDir)向C文件夹(targetDir)转移与B文件夹(captureDir)不同名的文件(目的是从A文件夹提取与B文件夹下不相同名字的文件放在另外文件夹下): 

# # -*- coding:utf-8 -*-
# """
# 作者:CloudSharing
# 邮箱:邮箱:zhaoc_chem@126.com
# 日期:2022年07月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 not in path_captureDir:
            shutil.copyfile(fileDir + '/' + file_name, targetDir + "\\" + file_name)
        else:
            pass


# selectFile(fileDir, trainDir)

if __name__ == '__main__':
    fileDir = r'E:\1_SPS\25_C82-AI\2_coord\trainDir\3_train2nd_initialStr'
    targetDir = r'E:\1_SPS\25_C82-AI\2_coord\trainDir\4_dft_nag2\transferfile'
    captureDir = r'E:\1_SPS\25_C82-AI\2_coord\trainDir\4_dft_nag2'
    CaptureRepeatFile(fileDir, targetDir, captureDir)

print("使用该脚本用时是{}s".format(time.time() - start))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值