1 前言
最近工作上碰到个事情,一个文件夹里有有很多款货的图片,每款货又有若干张不同角度拍摄的图片,我们需要把款货的图片整理在一起,放到一个单独的用它货号命名的文件夹里,也就是说如果有100个款的货,那么就要新建100个新文件夹,并且把对应货品放到对应的文件夹里。可以想象,如果用纯手工的方法,可能需要好几个小时的工作量。今天就来分享如何利用python快速的解决这个问题。
2 python的实现方法
① 导入相关的包:
import os
from shutil import copy
如果还没有安装shutil这个包首先需要用下面的命令现状这个包
pip install shutil
② 假设我们的全部图片在“E:\temp\全部图片”这个文件夹里面。
我们要把新建好的单独的文件夹都放到“E:\temp\拆分后图片”这个文件夹里
分别定义两个变量来表示这两个路径。
file_path1 = r'E:\temp\全部图片' # 存储所有图片的文件夹
file_path2 = r'E:\temp\拆分后图片' # 存储拆分后文件夹的文件夹
③ 获取所有图片名称的列表
# os.listdir方法可以获取指定路径下所有文件的名称
dir_list = os.listdir(file_path1)
dir_list 就是所有图片名称的一个列表。
④ 利用for循环确定每张图片的路径和将要被复制到的路径。
for pic_name in dir_lists:
from_path = file_path1 + '\\' + pic_name # 图片路径
code = pic_name[:13] # 取出货号
to_path = file_path2 + '\\' + code # 将要复制到的新路径
⑤ 根据这个新的路径创建文件夹,然后把图片复制到新文件夹中
for pic_name in dir_list:
from_path = file_path1 + '\\' + pic_name
code = pic_name[:13]
to_path = file_path2 + '\\' + code
if not os.path.isdir(to_path): # 判断文件夹是否存在
os.makedirs(to_path) # 创建文件夹
copy(from_path, to_path) # 复制文件到文件夹
运行代码后效果如下:
每个小文件夹里都是对应的若干张图片
完整代码如下:
import os
from shutil import copy
file_path1 = r'E:\temp\全部图片' # 存储所有图片的文件夹
file_path2 = r'E:\temp\拆分后图片' # 存储拆分后文件夹的文件夹
dir_list = os.listdir(file_path1)
for pic_name in dir_list:
from_path = file_path1 + '\\' + pic_name
code = pic_name[:13]
to_path = file_path2 + '\\' + code
if not os.path.isdir(to_path):
os.makedirs(to_path)
copy(from_path, to_path)
好了以上就是今天的分享,希望大家可以在工作中用的到。