Выполните итерацию по дереву папок и добавьте данные xmp в файлы в папках, затем переместите

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

Он работает нормально, пока вы не поместите другую папку в каталог, я хочу иметь возможность заглянуть внутрь и сделать то же самое с изображениями там.

for fileName in os.listdir(xmpDir):
  if not fileName.startswith('.'):  
    print (fileName)
    pid = re.findall(r'(_ID\d+_)', fileName)                  
    pid2 = str(pid)                                           
    bid = re.sub(r'\D', '', pid2)                              
    bid2 = int(bid)                                            
    newFileName = re.sub(r'(_ID\d+_)', '', fileName) 

    xmpfile = XMPFiles( file_path=fileName, open_forupdate=True )
    xmp = xmpfile.get_xmp()
    xmp.set_property(consts.XMP_NS_DC, u'ID', bid )
    xmpfile.put_xmp(xmp)
    xmpfile.close_file()
    shutil.move(xmpDir + fileName, newPath1 + newFileName)
    finder_colors.set(newPath1 + newFileName, 'purple')

Я пробовал OS Walk, но он выдает ошибку, я пытаюсь найти регулярное выражение в папке.

`DIR
|
+--- [subdir]
|     |
|     +--- image1.jpg
|     +--- image2.jpg
|
+--- [subdir]
|     |
|     +--- image3.jpg
|     +--- image4.jpg
+--- image5.jpg
+--- image6.jpg`

перейти к

`new dir with xmp
|
+--- [subdir]
|     |
|     +--- image1.jpg
|     +--- image2.jpg
|
+--- [subdir]
|     |
|     +--- image3.jpg
|     +--- image4.jpg
+--- image5.jpg
+--- image6.jpg`

Я врезался в стену, любая помощь будет признательна.

Спасибо!

1 ответ

Решение

Вы должны сделать свою функцию рекурсивной: обработать все файлы в вашем каталоге и для каждой найденной папки снова вызвать вашу функцию с этой папкой в ​​качестве параметра.

Вам также придется корректировать пути в функциях перемещения, так как они будут меняться при каждом вызове функции.

Другие вопросы по тегам