我正在寻找的是一个可以浏览大量图片并将其分类到文件夹中的脚本。
所以我在节目中拍摄了狗的照片,所以我想拍几张dog1的照片,这张狗图片会自动以序列号格式命名(Dog1-1,Dog1-2,Dog1-3等)。 Dog2将采用相同的格式。
我喜欢一个可以带Dog1-1-10并将它们移到一个名为Dog 1的文件夹中的脚本.Dog2-1-10进入一个名为Dog 2的文件夹,等等。
如何在Python中完成?
答案 0 :(得分:4)
基本上,你想要做的是:
首先,我们需要要检入的文件夹:
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)