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 ...
随机推荐
- zookeeper基本配置以及一些坑
配置 1. 解压安装包:tar zxvf zookeeper-3.4.14.tar.gz 2. 修改zookeeper配置: #Master cd zookeeper-3.4.14 #创建日志文件夹及 ...
- Java方法传参,测试在方法内部改变参数内容是否会影响到原值
我分了三种类型的参数进行测试 一.基本类型 public static void main(String[] args) { System.out.println("验证基本类型int作为参 ...
- Linux环境下MySQL 5.6安装与配置----亲测有效----纯离线安装
一.安装MySQL 1.下载安装包 mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 下载地址: https://dev.mysql.com/get/Downloa ...
- 焦大:seo思维进化论(番外)
http://www.wocaoseo.com/thread-54-1-1.html 我已经在博客说了学seo研究算法是愚蠢的行为,但是很多人仍旧来问se的算法问题,其中最多的就是问TF-IDF算法, ...
- gson 处理null
1.定义null处理类 class StringConverter : JsonSerializer<String?>, JsonDeserializer<String?> { ...
- Fitness - 05.06
倒计时239天 运动31分钟,共计10组,3.2公里.拉伸10分钟. 每组跑步1分钟(6.4KM/h),走路2分钟(5.8KM/h). 每组跑步1分钟的锻炼和上次比起来略显轻松,因此本次锻炼的目的主要 ...
- 分布式事务和分布式hash
分布式事务是什么? 分布式事务就是保证各个微服务之间数据一致,本质上就是保证不同数据库的数据一致性.一致性状态包含 强一致性,任何时刻,所有节点中数据都是一样的 弱一致性,数据更新后,只能访问到部分节 ...
- P1004 方格取数(四维动态规划)
题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A 0 0 0 0 0 0 0 0 ...
- I - 乓 (BFS+邻接表)
USTC campus network is a huge network. There is a bi-directional link between every pair of computer ...
- 知识点干货——CSS动画
CSS动画 (transition.animation) //2D动画 transform:translate(); /*偏移*/ transform:rotate(); /*旋转角度*/ trans ...