我需要写一个Python脚本来对图片进行排序,我该怎么做呢



我想要的是一个可以浏览大量图片并将其排序到文件夹中的脚本。

所以我在展会上给狗拍照,比如说我给狗1拍了几张照片,这张狗的照片会自动以序列号格式命名(dog1-1、dog1-2、dog1-3等)。Dog2将遵循相同的格式。

我想要一个可以将Dog1-1-10移到名为Dog1的文件夹中的脚本。Dog2-1-10放入名为Dog 2等的文件夹中。

在Python中如何做到这一点?

因此,基本上,您想要做的是:

  1. 查找给定文件夹中的每个文件
  2. 将每个文件名的第一部分用作文件夹名称
  3. 如果文件夹不存在,请创建它
  4. 将文件移到该文件夹中
  5. 重复

哦,漂亮!弄清楚我们想做什么是成功的一半——现在,主要是在谷歌上搜索并将其转化为代码。

首先,我们需要登记的文件夹:

folder_path = "myfolder"

现在,我们想找到该文件夹中的每个文件。一个快速的谷歌搜索会话显示:

import os
import os.path
images = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

顺便说一句,我将稍微使用os.path.join,所以您可能想简要了解一下它的作用。你在评论中链接到的指南涵盖得相当好。

现在,我们想要每个名字的第一部分。我假设我们将把第一个破折号之前的所有内容都作为文件夹名称,而忽略其余部分。一种方法是使用string.split,它将给定字符的字符串拆分为字符串列表,并获取第一个元素:

for image in images:
    folder_name = image.split('-')[0]

现在,如果这个文件夹还不存在,我们想创建它。再次,谷歌是我们的朋友:

new_path = os.path.join(folder_path, folder_name)
if not os.path.exists(new_path):
    os.makedirs(new_path)

最后,我们移动原始图像:

import shutil
old_image_path = os.path.join(folder_path, image)
new_image_path = os.path.join(new_path, image)
shutil.move(old_image_path, new_image_path)

综合起来:

import os
import os.path
import shutil
folder_path = "test"
images = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]
for image in images:
    folder_name = image.split('-')[0]
    new_path = os.path.join(folder_path, folder_name)
    if not os.path.exists(new_path):
        os.makedirs(new_path)
    old_image_path = os.path.join(folder_path, image)
    new_image_path = os.path.join(new_path, image)
    shutil.move(old_image_path, new_image_path)

相关内容

  • 没有找到相关文章

最新更新