Python: как рекурсивно перемещаться по папкам и файлы shutil.move() в целевые папки

Начинающий здесь. Я хочу иметь возможность просматривать папки и их подкаталоги и файлы и перемещать все уникальные расширения файлов в отдельную папку для этого типа файлов. Пример.jpg -> в папку jpg. (Это все в Python's IDLE)

У меня есть этот код:

os.chdir('c:\\users\\dchrie504\\Downloads_2')
# walk through all files and folders to get unique filetypes.
l_Files = os.walk('c:\\users\\dchrie504\\Downloads_2')
fileTypes = []
for walk in l_Files:
    for file in walk[-1]:
        fileTypes.append(file.split('.')[-1])
# make all items lowercase to create distinct values
fileTypes = [x.lower() for x in fileTypes]

# get rid of duplicate filetypes by creating set then back to list. 
fileTypes = set(fileTypes)
fileTypes = list(fileTypes)
# create a folder for each unique filetype. 
for ft in fileTypes:
    os.mkdir(os.getcwd() + '\\' + ft)
fileWalk = os.walk('c:\\users\\dchrie504\\Downloads_2')

#Trying to move files to their respective fileType folder.
for fileType in fileTypes:
     for folder, sub, files in os.walk('c:\\users\\dchrie504\\Downloads_2'):
         for file in files:
             if file.endswith('.' + fileType):
                 shutil.move(file, (os.getcwd() + '\\' + fileType))

Проблема в том, что я получаю следующую ошибку при выполнении этой части:

         for file in files:
             if file.endswith('.' + fileType):
                 shutil.move(file, (os.getcwd() + '\\' + fileType))

Сообщение об ошибке: Traceback (последний вызов был последним): файл "", строка 5, в shutil.move(file, (os.getcwd() + '\' + fileType)) файл "C:\Users\dchrie504\AppData\" Локальные \Programs\Python\Python37-32\lib\shutil.py", строка 555, ошибка шага повышения (" целевой путь " % s" уже существует " % real_dst) shutil.Error: целевой путь" c:\users\dchrie504\Downloads_2\txt\New Text Document.txt'уже существует

1 ответ

Вы должны указать полный путь, чтобы shutil.move перезаписывал.

shutil.move(fullpathorigin, fullpathdestination)
Другие вопросы по тегам