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

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

因此,我在节目中拍摄了狗的照片,因此可以说我拍了几张dog1照片,这张狗照片会自动以序列号格式命名(Dog1-1,Dog1-2,Dog1-3等)。 Dog2将遵循相同的格式。

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

这怎么可以在Python中完成?


所以基本上,你想要做的是:

  • 查找给定文件夹中的每个文件
  • 取每个文件名的第一部分,并将其用作文件夹名称
  • 如果该文件夹不存在,请创建它
  • 将文件移动到该文件夹​​中
  • 重复
  • 那么,漂亮! 弄清楚我们想要做的是战斗的一半 - 现在,这主要是一个谷歌搜索并将其转化为代码的问题。

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

    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一句,我将会使用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)
    
    链接地址: http://www.djcxy.com/p/9277.html

    上一篇: I need to write a Python script to sort pictures, how would I do this?

    下一篇: Create new folders using python