Python 根据名称将多个文件从单个文件夹移动到多个文件夹

Python 根据名称将多个文件从单个文件夹移动到多个文件夹,python,python-3.x,directory,Python,Python 3.x,Directory,我有一个文件夹,其中包含以下类型的文件- 拳击手1.jpg 拳击手2.jpg 美国斗牛犬120.jpg 美国斗牛犬 在这里,每个字母名称代表动物的品种,数字代表其数量。 我想根据文件名的名称创建文件夹,然后将文件放在各自的文件夹中。 我希望文件夹名称只是按字母顺序排列的名称 我已设法从文件名创建文件夹。 首先,我从文件名中删除了数字、下划线和扩展名,然后将它们放在列表中。 然后我从列表中创建了文件夹 files = os.listdir("data_path") import re

我有一个文件夹,其中包含以下类型的文件-
拳击手1.jpg
拳击手2.jpg
美国斗牛犬120.jpg
美国斗牛犬 在这里,每个字母名称代表动物的品种,数字代表其数量。
我想根据文件名的名称创建文件夹,然后将文件放在各自的文件夹中。
我希望文件夹名称只是按字母顺序排列的名称

我已设法从文件名创建文件夹。 首先,我从文件名中删除了数字、下划线和扩展名,然后将它们放在列表中。 然后我从列表中创建了文件夹

  files = os.listdir("data_path")
  import re
  cleaned_files = []
  for each in files: # To remove the digits and underscore.
     cleaned_files.append(re.sub(r'[0-9\_]','',each))

  new_files = [] # To remove the .jpg extension
  for each in distinct_files:
     new_files.append(re.sub('.jpg','',each))

  from collections import OrderedDict # To make list distinct 
  distinct_files = list(OrderedDict.fromkeys(new_files))

  path_dir = 'Modified_Dataset_Path' #Creation of folders
  for folder in distinct_files:
     os.mkdir(os.path.join(path_dir,folder))
我不能从这里开始,如何将文件放置到相应的文件夹中。 任何其他解决这个问题的方法都是受欢迎的。
另一方面,如果有人想测试他们的方法,数据集是可用的。

因此,您可以对每个文件执行相同的处理,然后将其移动到该目录


cleaned_files = []
new_files = []
for f in files
    cleaned_files=(re.sub(r'[0-9\_]','',f))
    new_files=(re.sub('.jpg','',cleaned_files))
    shutil.copy(os.path.join(data_path,f),os.path.join(Modified_Dataset_Path,new_files))

数据路径是原始文件所在的目录,而修改的数据集路径是所有新目录所在的目录。

为什么要删除数字?新创建的文件夹的名称是什么?我正在删除数字,因为由于数字的顺序,不同文件名的总数是3000。新文件夹的名称只是按字母顺序排列的名称,如boxer、americanbulldog。尽管我有一个问题,扩展名“jpg”是如何保留在新数据集路径的文件名中的?@Mark因此shutil.copy包含一个源和一个目标,源是一个文件,目标是一个目录,所以它将原始文件复制到目标目录。我只是对文件进行修改,以找到目标文件夹的名称。