我的照片编辑器搞砸了我的很多照片的标签。我把这作为开始熟悉Python并编写脚本来清理标签的最后一步。我发现pyexiv2可能非常方便,我试着基本上按照教程(http://tilloy.net/dev/pyexiv2/tutorial.html)。
我想做什么:
在我在编辑器中检查XMP文件之前,事情看起来很不错。更改的值不会显示。但是,XMP文件获取新的时间戳,如果我将XMP文件设置为只读,则会收到错误消息。所以似乎有东西被写入文件。只是没有正确的数据。
这是一个显示我问题的最小脚本:
import pyexiv2
key= 'Xmp.dc.subject'
metadata = pyexiv2.ImageMetadata('test.xmp')
metadata.read()
print metadata[key]
metadata[key] = ['NewTag']
print metadata[key]
metadata.write()
它的输出是:
<Xmp.dc.subject [bag Text] = ['OldTag']>
<Xmp.dc.subject [bag Text] = ['NewTag']>
Script terminated.
但是XMP文件的相关部分仍然如下所示:
<dc:subject>
<rdf:Bag>
<rdf:li>OldTag</rdf:li>
</rdf:Bag>
</dc:subject>
那么为了将更改的元数据写入XMP文件,我该怎么办?
请注意我是Python的完全初学者(但不是编程),所以这个问题可能是因为我不知道的一些微不足道的问题。我在Debian Linux上运行Python 2.7.6。
答案 0 :(得分:0)
有关pyexiv2.metadata.ImageMetadata的API文档说:
图像中嵌入的所有元数据的容器。
它提供了使用Python类型操作嵌入在JPEG和TIFF文件等图像文件中的EXIF,IPTC和XMP元数据的便捷方法。它还可以访问图像中嵌入的预览。
看起来可能不支持编写边车文件。