接到个朋友的需求,从多个目录里随机复制一个图片到固定目录。
大概就是想从看看这些目录里的图片都有哪些风格。
这个需求在工作中可能也会遇到。将解决的代码贴出来,供参考使用。
# 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个目录名 和 特定文件后缀列表即可使用。