python 怎么拷贝一个文件到一个新的文件_python实现随机复制若干个文件到新目录...

python实现随机复制若干个文件到新目录

1说明

1.1 目的

随机选择一个文件下的若干个文件,并将文件复制到新文件夹下

1.2 要求

需要将random_select_and_copy_file.py文件放置在父目录下,并选定相应的文件夹,比如需要选择train文件夹下的若干个图片

目录结构

图片文件:

注意:并且默认新生成存放文件的目录为new_train,所以该路径下不能有已存在new_train目录

2代码实现

from shutil import copyfile

import random

import os

def random_select_and_copy_files(dir_name=None, select_number=0):

'''

随机从dir_name目录中选择select_number个文件并复制到new_dir_name目录下

:param dir_name: 待选择文件的目录名

:param select_number: 随机选择的文件数量

:return: None

'''

# 处理输入目录名异常

try:

dir_name is None or dir_name not in os.listdir(os.getcwd())

except:

print("输入目录名错误")

dir_path = os.path.join(os.getcwd(), dir_name) # 获取文件目录路径

files_list = os.listdir(dir_path) # 生成文件名列表

files_number = len(files_list)

# 处理输入数量异常

try:

select_number > files_number

except:

print("选择文件超过原本数量")

generate_list = random.sample(files_list, select_number) # 随机选取文件

# 生成存放文件新目录,默认以new开头

new_dir_path = os.path.join(os.getcwd(), 'new_'+dir_name)

os.mkdir(new_dir_path)

success_number = 0 # 记录成功数量

success_list = [] # 记录成功文件

# 复制文件并记录

for file_name in generate_list:

orl_file_path = os.path.join(dir_path, file_name)

new_file_path = os.path.join(new_dir_path, file_name)

copyfile(orl_file_path, new_file_path) # 复制文件

success_list.append(file_name)

success_number += 1

if success_number % 100 == 0:

print("success", success_number)

# 给出提示信息并给出未成功文件

if success_number == select_number:

print("all", select_number, "finish")

else:

print("unfinished")

error_list = []

for file_name in files_list:

if file_name not in success_list:

error_list.append(file_name)

print(error_list, 'error', sep='\n')

if __name__ == "__main__":

random_select_and_copy_files("train", 10)

3效果

生成新目录,并且随机拷贝若干个文件到新目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值