use*_*113 2 python sorting automation file
我正在寻找的是一个脚本,它可以浏览大量图片并将它们分类到文件夹中。
所以我在展会上拍了狗的照片,所以假设我拍了几张 dog1 的照片,这张狗的照片会自动以序列号格式命名(Dog1-1、Dog1-2、Dog1-3 等)。Dog2 将遵循相同的格式。
我想要一个可以将 Dog1-1-10 移动到名为 Dog 1 的文件夹中的脚本。Dog2-1-10 移动到名为 Dog 2 的文件夹中,等等。
这如何在 Python 中完成?
所以基本上,你想做的是:
嗯,漂亮!弄清楚我们想要做什么是成功的一半——现在,主要是谷歌搜索并将其转换为代码。
首先,我们需要要签入的文件夹:
folder_path = "myfolder"
Run Code Online (Sandbox Code Playgroud)
现在,我们要查找该文件夹中的每个文件。一个快速的谷歌搜索会话变成了这个:
import os
import os.path
images = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]
Run Code Online (Sandbox Code Playgroud)
顺便说os.path.join一句,我将使用相当多的内容,因此您可能需要简要了解它的作用。您在评论中链接的指南很好地涵盖了它。
现在,我们想要每个名称的第一部分。我将假设我们将第一个破折号上的所有内容都视为文件夹名称,而忽略其余部分。一种方法是使用string.split,它将给定字符的字符串拆分为字符串列表,并获取第一个元素:
for image in images:
folder_name = image.split('-')[0]
Run Code Online (Sandbox Code Playgroud)
现在,如果该文件夹尚不存在,我们要创建它。再次,谷歌是我们的朋友:
new_path = os.path.join(folder_path, folder_name)
if not os.path.exists(new_path):
os.makedirs(new_path)
Run Code Online (Sandbox Code Playgroud)
最后,我们移动原始图像:
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)
Run Code Online (Sandbox Code Playgroud)
把它们放在一起:
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)
Run Code Online (Sandbox Code Playgroud)