最近deepseek爆火,我也写过很多文章来叙述其对行业及广大职场人员的影响,为了具象化一些,专门开个系列,记录日常DeepSeek对我工作的一些帮助。
今天,领导让把资料库下载的将近500张的图片按照类别分类整理到不同的文件夹,因为牵扯到保密,就用微信图片替代,如下图
这个图片仅为示例,主要是为了说明具体的应用场景,面对这种,常规的方法就是按照名称排序,然后一个一个新建文件夹,然后将相同类别的图片拖入新的文件夹,学过编程的,稍微会轻松点,先找具体的特征,然后按照特征值,编程来完成工作。可是对于大多数职场人来说,都是按照最原始的方法来完成。
作为一个职场老油田,怎么可能真当牛马,所以我第一时间就把问题甩给了deepseek,我是这样提问的:我有个文件夹,里面有几百张图片,我想按照图片名称进行分类,然后放入新的文件夹,用python如何实现(deepseek比较友好的一点就是,用户不需要具备太专业的提示词技巧,直接说明直接的需求即可,这是比其他人工智能助手好用的一个很关键一点)。
deepseek输出的结果是:import os
import shutil
defify_images(source_dir, dest_dir=None, separator='_'):
"""
将源文件夹中的图片按名称分类到子文件夹
:param source_dir: 源图片文件夹路径
:param dest_dir: 目标根目录(默认与源目录相同)
:param separator: 文件名分类分隔符(默认为下划线)
"""
if dest_dir is None:
dest_dir = source_dir
# 支持的图片格式
image_exts = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp')
for filename in os.listdir(source_dir):
file_path = os.path.join(source_dir, filename)
if not os.path.isfile(file_path):
continue
# 检查是否为图片
ext = os.path.splitext(filename)[1].lower()
if ext not in image_exts:
continue
# 提取分类名称(默认以分隔符第一个部分为分类)
base_name = os.path.splitext(filename)[0]
parts = base_name.split(separator)
category = parts[0] if len(parts) > 0 else 'other'
# 创建目标文件夹
target_folder = os.path.join(dest_dir, category)
os.makedirs(target_folder, exist_ok=True)
# 移动文件
shutil.move(file_path, os.path.join(target_folder, filename))
print(f"已移动: {filename} -> {target_folder}")
# 使用示例
source_folder = '/path/to/your/images'
classify_images(source_folder)
这个代码的执行的逻辑是,按照图片名称中的“_”对文件名进行分割,然后“_”前名称相同的进行分类,同一名称的会放入一个文件夹。
绿色背景的是需要修改的两个地方,第一个是具体分类规则,第二个是要操作的图片的文件路径。
上面图片是最后运行的结果。
但在后面更广泛应用的时候,遇到了问题,如果文件名称中特征分割为字符时,会报错,为了提高宽容度,我又向deepseek提出了要求:我是以一个字符为分割线。
下面是deepseek输出的新的结果:
import os
import shutil
defify_images_by_char(source_dir, dest_dir=None, separator='_', fallback='other'):
"""
根据文件名中特定分隔符的首次出现位置进行分类
:param source_dir: 源文件夹路径
:param dest_dir: 目标根目录(默认与源目录相同)
:param separator: 分隔字符(如'-', '#', ' '等)
:param fallback: 当分隔符不存在时的默认分类名
"""
if dest_dir is None:
dest_dir = source_dir
image_exts = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp')
for filename in os.listdir(source_dir):
file_path = os.path.join(source_dir, filename)
if not os.path.isfile(file_path):
continue
ext = os.path.splitext(filename)[1].lower()
if ext not in image_exts:
continue
base_name = os.path.splitext(filename)[0]
# 根据分隔符分割文件名
if separator in base_name:
# 取第一个分隔符前的部分作为分类名
category = base_name.split(separator, 1)[0].strip() # 去除前后空格
category = category if category else fallback # 防止空分类名
else:
category = fallback # 无分隔符时归类到备用目录
# 创建目标文件夹
target_folder = os.path.join(dest_dir, category)
os.makedirs(target_folder, exist_ok=True)
# 移动文件
shutil.move(file_path, os.path.join(target_folder, filename))
print(f"Moved: {filename} => {target_folder}")
# 使用示例
source_folder = '/path/to/your/images'
classify_images_by_char(source_folder, separator='-') # 假设文件名如 "cat-001.jpg"
这次deepseek对代码进行了改进,同时将特征分割点和文件路径统一放在了最后,对于小白更加友好,我们可以将后面的“-”修改成任意符号和字符。
这就是我今天通过deepseek提升工作效率的小缩影,后面我会持续更新~,也欢迎大家在评论区分享你们的心得~