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效果
生成新目录,并且随机拷贝若干个文件到新目录

python实现随机复制若干个文件到新目录的更多相关文章
- Python 批量修改文件名并移动文件到指定目录
# -*- coding: utf-8 -*- import os, sys,re,shutil from nt import chdir #读取中文路径 u'' path=u"D:\\zh ...
- bat脚本实现复制特定后缀文件到其他目录
@echo off for /r %%a in (*.txt) do copy %%a D:\1 pause 1.for /r主要用于搜索指定路径及其所有子目录中符合要求的文件(/r后如果没有指定目录 ...
- vs2015中将复制过来的文件夹显示目录文件
先将文件夹和文件复制到VS程序所在的位置,点击解决方案资源管理器上的“显示所有文件”按纽,展开这个文件夹,这样你就可以看到这个文件或者文件夹了,这时,这个文件或者文件夹是虚线构成的.你右击这个文件或者 ...
- 【Python基础】之不同的文件在不同目录下导入指定模块的方法
如下图三个文件的目录路径 – project |– 1 | |– 2 | | |– 3 | | | |– owen.py ...
- Python语法速查: 12. 文件与输入输出
返回目录 (1)文件基本操作 ● 文件常用操作 内置函数或方法 描述 open(name [,mode [,buffering]]) 内置函数.用来打开文件,返回一个文件对象(file对象).详见下述 ...
- python 解压、复制、删除 文件
一.python3解压文件 1.python 解压文件代码示例 如下代码主要实现zip.rar.tar.tar.gz四种格式的压缩文件的解压 def unzip_file(src_file, dst_ ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- python使用xlrd模块读写Excel文件的方法
本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi ...
- Python 生成随机验证码
Python生成随机验证码 Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...
随机推荐
- Hello-Annie
Annie theme Annie是一个简单的Hexo博客主题,如果你喜欢散文.诗歌.小说......那么它可能合你心意! ☞预览-1,☞预览-2 Features 文艺.优雅.简洁的博客主题 页头随 ...
- 如何满足EN50128软件安全认证标准?
导语 EN 50128是为铁路行业的特定需求量身定制的功能安全标准.其标题为“铁路应用—通信,信号和处理系统—铁路控制和防护系统软件”.遵守该标准的要求对于铁路软件开发是至关重要的.因此,必须了解什么 ...
- Mac包管理神器:Home-brew
最近看到一个大神修改的Homebrew国内脚本,安装非常方便,以前使用国外的经常下载不下来,这个感觉是非常快的. Homebrew 国内自动安装脚本 ,修改原脚本中的 clone 操作为“浅拷贝”(- ...
- 基于.NetCore3.1系列 —— 日志记录之初识Serilog
一.前言 对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径.而在实际项目开发中,使用第三方日志框架(如: Log4Net.NLog.Loggr.Serilog.Sen ...
- go语言基础实例
一:变量 1)变量声明 func main() { var v1 int var v2 int //一次声明多个变量 var ( v3 int v4 int ) //变量最开始会有一个零值 fmt.P ...
- 【Flutter 实战】17篇动画系列文章带你走进自定义动画
老孟导读:Flutter 动画系列文章分为三部分:基础原理和核心概念.系统动画组件.8篇自定义动画案例,共17篇. 动画核心概念 在开发App的过程中,自定义动画必不可少,Flutter 中想要自定义 ...
- Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- MSP430-LED中断闪烁代码详解
使用MSP430F149的开发板,首先对LED闪烁灯的例程进行讲解,然后下边是自己写的,将部分代码写入了新建的led.c程序中 #include <msp430x14x.h> ...
- 小程序开发-block组件的使用
微信小程序中,block不是一个组件,而是一个包装元素,不会在页面中做任何渲染. 使用情况:条件渲染 wx:if 因为 wx:if 是一个控制属性,需要将它添加到一个标签/组件上,用于控制隐藏与显示. ...
- C001:打印勾
程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { printf(" *\n"); p ...