从多个目录随机抽样文件

接到个朋友的需求,从多个目录里随机复制一个图片到固定目录。

大概就是想从看看这些目录里的图片都有哪些风格。

这个需求在工作中可能也会遇到。将解决的代码贴出来,供参考使用。

# encoding: utf-8
"""

@contact: hndm@qq.com

陈年椰子

说明
随机复制图片到特定目录

"""
import os
import random


def check_all_files(check_path, ext_lst):
    list_files = []
    # 列出文件夹下所有的目录与文件
    cur_list = os.listdir(check_path)
    for i in range(0 ,len(cur_list)):
        file_path = os.path.join(check_path, cur_list[i])
        # 不递归调用
        # if os.path.isdir(file_path):
        #     list_files.extend(check_all_files(file_path))
        if os.path.isfile(file_path):
            for ext in ext_lst:
                if cur_list[i].upper()[(len(ext)+1)*-1:] == '.'+ext:
                    list_files.append([cur_list[i], file_path])
    return list_files

def check_all_dir(check_path):
    list_files = []
    # 列出文件夹下所有的目录
    cur_list = os.listdir(check_path)
    for i in range(0 ,len(cur_list)):
        file_path = os.path.join(check_path, cur_list[i])
        if os.path.isdir(file_path):
            list_files.append([cur_list[i], file_path])
    return list_files


# 如果是win 7 需要这句
os.system('chcp 65001')
# 替换成你的目标目录
tg_dir = r"D:\bak"
# 替换成你的查找文件的目录
dir_lst = check_all_dir(r"D:\PHOTOS")
for d in dir_lst:
    # 图片文件后缀列表, 大写
    temp = check_all_files(d[1],["PNG","BMP","JPG"])

    cp_file = ""
    if len(temp)>0:
        cp_file = random.choice(temp)
        tg_file = "{}/{}".format(tg_dir,cp_file[0])
        os_cmd = 'copy "{}"  "{}"'.format(cp_file[1], tg_file)
        print(d[0], "{}个图片文件".format(len(temp)), "运行命令{}".format(os_cmd))
        os.system(os_cmd)
    else:
        print(d[0],"未找到目标文件")

实际使用中,只要改2个目录名 和 特定文件后缀列表即可使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年椰子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值