Выполните итерацию по дереву папок и добавьте данные 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 ответ
Решение
Вы должны сделать свою функцию рекурсивной: обработать все файлы в вашем каталоге и для каждой найденной папки снова вызвать вашу функцию с этой папкой в качестве параметра.
Вам также придется корректировать пути в функциях перемещения, так как они будут меняться при каждом вызове функции.