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

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

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

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

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

1 Ответ

0 голосов
/ 05 февраля 2019

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

shutil.move(fullpathorigin, fullpathdestination)
...