遍历文件夹树并将 xmp 数据添加到文件夹中的文件,然后移动

Iterate over a folder tree and add xmp data to files in folders then move

我正在尝试 运行 将 xmp 数据嵌入图像的文件夹上的 python 脚本,修改文件名正则表达式,然后移动文件。

除非您在目录中放置另一个文件夹,否则它工作正常,我希望能够查看内部并对其中的图像执行相同的操作。

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`

我遇到了一些困难,如有任何帮助,我们将不胜感激。

谢谢!

您必须使函数递归:处理目录中的所有文件,并针对找到的每个文件夹再次调用您的函数,并以该文件夹作为参数。

您还必须调整移动函数中的路径,因为它们会随着每次函数调用而改变。