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

时间:2014-04-20 03:16:40

标签: python file sorting automation

我正在寻找的是一个可以浏览大量图片并将其分类到文件夹中的脚本。

所以我在节目中拍摄了狗的照片,所以我想拍几张dog1的照片,这张狗图片会自动以序列号格式命名(Dog1-1,Dog1-2,Dog1-3等)。 Dog2将采用相同的格式。

我喜欢一个可以带Dog1-1-10并将它们移到一个名为Dog 1的文件夹中的脚本.Dog2-1-10进入一个名为Dog 2的文件夹,等等。

如何在Python中完成?

1 个答案:

答案 0 :(得分:4)

基本上,你想要做的是:

  1. 查找给定文件夹中的每个文件
  2. 获取每个文件名的第一部分并将其用作文件夹名称
  3. 如果该文件夹不存在,请创建
  4. 将文件移至该文件夹
  5. 重复
  6. 嗯,太漂亮了!弄清楚我们想做什么是成功的一半 - 现在,这主要是谷歌搜索并将其转化为代码。

    首先,我们需要要检入的文件夹:

    folder_path = "myfolder"
    

    现在,我们要查找该文件夹中的每个文件。快速谷歌搜索会话出现this

    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]
    

    现在,如果该文件夹尚不存在,我们想要创建它。同样,google is our friend

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

    最后,我们move the original image

    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)