Перемещение нескольких файлов из одной папки в несколько папок в соответствии с их именем - PullRequest
1 голос
/ 25 июня 2019

У меня есть папка, которая содержит файлы следующего типа -
boxer_1.jpg
boxer_2.jpg
american_bulldog_120.jpg
american_bulldog_119.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))

Я не могу продолжить отсюда, как поместить файлы в соответствующие папки.Любой другой подход к решению этой проблемы также приветствуется.PS- Набор данных Oxford IIIT Pet набор данных , если кто-то хочет попробовать проверить свой подход.

1 Ответ

1 голос
/ 25 июня 2019

Таким образом, вы можете выполнить одинаковую обработку для каждого файла, а затем переместить его в этот каталог.


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))

Когда data_path является каталогом, находятся исходные файлы, а Modified_Dataset_Path является каталогом, в котором находятся все ваши новые каталоги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...