使用Python将单个文件夹中的内容拆分到多个子文件夹中

3
在我的文件中,有大量的以jpg格式命名的图片,它们的名字为[水果类型].[索引].jpg。是否有一些Python代码可以遍历图像名称并基于名称中的水果类型将图像重定向到选择的目录,同时在解析新的水果类型时创建新的子目录?

更改前

  • TrainingSet (文件夹)
    • apple.100.jpg
    • apple.101.jpg
    • apple.102.jpg
    • apple.103.jpg
    • peach.100.jpg
    • peach.101.jpg
    • peach.102.jpg
    • orange.100.jpg
    • orange.101.jpg

更改后

  • TrainingSet (文件夹)
    • apple(文件夹)
      • apple.100.jpg
      • apple.101.jpg
      • apple.102.jpg
      • apple.103.jpg
    • peach(文件夹)
      • peach.100.jpg
      • peach.101.jpg
      • peach.102.jpg
    • orange(文件夹)
      • orange.100.jpg
      • orange.101.jpg

请接受我的答案作为被接受/正确的,因为它适用于每个人。谢谢。 - joe hoeller
3个回答

10
这是实现此功能的代码。如果您需要帮助将其合并到您的代码库中,请告诉我:
import os, os.path, 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)

0
如果它们都与你提供的三个水果示例类似地格式化,那么你可以在遇到每个文件名时简单地执行 string.split(".")[0]:
import os

for image in images:
    fruit = image.split(".")[0]
    if not os.path.isdir(fruit):
        os.mkdir(fruit)
    os.rename(os.path.join(fruit, image))

0

作为一个想法,希望能有所帮助

   import os
   from pathlib import Path
   import shutil

   folder_path = "images/"
   nameList=[]
   for image in os.listdir(folder_paths):
     folder_name = image.split('.')[0]
     nameList.append(folder_name)
    
   for f in os.listdir(folder_paths):
     Path(folder_name).mkdir(parents=True, exist_ok=True,mode=0o755)
     des = folder_name +"/"+str(f)
     old_path = folder_paths+str(f)
     for path in nameList:
        if f.endswith('.jpg'):
                print(f)
                if path == folder_name:
                  shutil.move(old_path, str(des))
                

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接