在Python中访问Windows文件的"标签"元数据

5

我如何在Windows文件属性面板中访问标记属性?是否有可用的模块?大多数谷歌搜索都返回与媒体文件、文件访问时间相关的属性,但与元数据属性如标记、描述等相关的内容很少。

exif 模块能够访问更多属性,但仍然无法读取“标签”属性。

File Properties Window

我想要读写文件的是 Description -> Tags 属性。

“Description -> Tags” 属性是我想要读写到文件中的内容。我想要读取和写入。 - Xevion
1
Windows中的图像“标签”属性是从三个不同的元数据条目中填充的。XPKeywordsIPTC:KeywordsXMP:SubjectXPKeywords较少见,主要仅受Windows支持。大多数其他程序将支持IPTC:Keywords和/或XMP:Subject,通常在支持两者的情况下保持它们同步(例如Adobe Lightroom)。您可能需要了解一下PyExiftool,它是exiftool的包装器。 - StarGeek
2个回答

5

有一个专门满足我的需求的模块:IPTCInfo3

import iptcinfo3, os, sys, random, string

# Random string gennerator
rnd = lambda length=3 : ''.join(random.choices(list(string.ascii_letters), k=length))
# Path to the file, open a IPTCInfo object
path = os.path.join(sys.path[0], 'DSC_7960.jpg')
info = iptcinfo3.IPTCInfo(path)
# Show the keywords
print(info['keywords'])
# Add a keyword and save
info['keywords'] = [rnd()]
info.save()
# Remove the weird ghost file created after saving
os.remove(path + '~')

我并不完全确定所谓的“ghost file”是什么或有何作用,因为它看起来就像是原始文件的精确复制,因为文件大小保持不变,但无论如何,我会将其删除,因为它对于我需要读写元数据的目的是完全无用的。

在设置关键词时,我注意到了一些奇怪的行为,比如有些关键词被吞噬到了文件里(文件大小发生了变化,我知道它们在那里,但Windows没有确认这一点),只有手动删除这些关键词后,它们才会突然重新出现。非常奇怪。


你没有使用Windows属性系统,这很可能是它们不同步的原因。属性系统是在各种文件类型的特定属性之上的抽象层。 - Anders

0
你所指的奇怪的幽灵文件是Windows的锁定文件。当你打开一个文件时,Windows会自动创建一个名为~lock.filename的文件。当你关闭文件时,在所有应用程序中,Windows会删除这个文件。你可以通过在文件资源管理器中打开一个文件夹,然后打开该文件来亲自验证这一点。~lock.filename将会出现。关闭文件,它就会消失。

我并不否认幽灵文件看起来像是一个锁定文件,但是说“当你打开一个文件时,Windows...”似乎过于笼统,并且可以通过简单的测试来无效化。我复制了一个文件,在各种程序中打开它,并使用Get-ChildItem(powershell)检查锁定文件。我还搜索了隐藏文件(-Hidden)。什么都没有找到。我确实见过一些程序创建锁定文件,但它们通常是特定于实现的,不能一概而论地归因于Windows,就像你所说的那样。 - Xevion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接