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)