Python: перемещение файлов в папку на основе части имени файла

#python

#python

Вопрос:

Папка содержит файлы

  1. имя_файла_partone_1
  2. имя_файла_partone_2
  3. имя_файла_partone_3
  4. имя_файла_parttwo_1
  5. имя_файла_parttwo_2
  6. filenametwo_1
  7. filenametwo_2

Теперь я хочу переместить (1,2,3) (4,5) (6,7) в каждую папку. На основе имени файла должна быть создана папка и перемещены соответствующие файлы. Следующий код работает, но имя файла, которое он имеет в диапазоне символов x: y, но это не будет работать над примерами имен файлов.ПОЭТОМУ необходимо внести некоторые изменения в передачу имени файла.Спасибо.

      import os, shutil
        os.chdir("<abs path to desktop>")
        for f in os.listdir("folder"):
            folderName = f[0:10]
            if not os.path.exists(folderName):
                os.mkdir(folderName)
                shutil.copy(os.path.join('folder', f), folderName)
            else:
                shutil.copy(os.path.join('folder', f), folderName)
 

Комментарии:

1. Что вы подразумеваете под «диапазоном символов x: y» ?

2. @Harith, диапазон символов—Filename : обратитесь к 4-й строке в коде f[0:10].

3. Отличается ли длина имени файла в каждом конкретном случае? В строке 4 вы инициализируете каждое имя папки как первые десять индексов. Но в вашем примере вы хотите сгруппировать сначала 3 отдельных, затем 4 и 5

4. @Fthomsan, согласно моему примеру, нужно создать только 3 папки и папку 1 (1,2,3), папку 2 (4,5), папку 3 (6,7) файлов соответственно. Спасибо.

Ответ №1:

Предполагается, что файл всегда будет заканчиваться на «_number»

      import os, shutil
        os.chdir("<abs path to desktop>")
        for f in os.listdir("folder"):
            folderName = f[0:-2]
            if not os.path.exists(folderName):
                os.mkdir(folderName)
                shutil.copy(os.path.join('folder', f), folderName)
            else:
                shutil.copy(os.path.join('folder', f), folderName)




 

Комментарии:

1. Спасибо за ваш ответ. Я не видел эффекта _underscore. Код, который я опубликовал, folderName = f[0:10] вы изменили folderName = f[0:-2]. Я справился с количеством символов в имени файла. Спасибо.

2. f[x:y] с или без- знак принимает символы. согласно вашему предположению, символ _ с количеством означает, что папки должны быть созданы в first_ или в соответствии с заданным номером. Спасибо.

3. сработало ли это решение для вас? Предполагалось, что имя папки должно содержать все индексы, кроме последних 2, поскольку именно так они сгруппированы в вопросе. E. Я удаляю последние 2 символа из каждого имени файла, и это папки, которые должны быть созданы. Рад помочь / изменить, если это не то, что вам нужно

4. Решение не работает, потому что то, которое я предоставил выше, такое же, за исключением количества символов. Я очень ценю вашу доброту и помощь. На самом деле мне нужно на основе разделителя / специального символа распознать перемещение файла. Будь то первое подчеркивание _ 1st или 2nd и т. Д. Еще раз спасибо за ваш ответ и помощь.