如何在Windows Vista中用Python获取文件标签?
我想为我有的几个文件夹做一个标签云,但不幸的是,我找不到在Windows Vista中访问文件标签的方法。我试着查看win32模块和os.stat,但就是找不到办法。有人能帮帮我吗?
5 个回答
2
看起来Windows把标签存储在文件里。只要给任何一张图片加标签,然后用记事本打开这张图片,接着找找看有没有类似XML的东西(RDF),你就能在里面找到你的标签。嗯……现在我们知道这些标签确实存储在文件里,但我们还是不知道怎么去操作它们。
不过,谷歌来帮忙了。我搜索了:windows metadata api
然后找到了这个链接:http://blogs.msdn.com/pix/archive/2006/12/06/photo-metadata-apis.aspx
4
看起来,你需要使用 Windows搜索API 来查找 系统关键词。你可以通过 ctypes
直接访问这个API,或者通过需要 win32扩展 的方式间接访问,使用API的 COM互操作 组件。抱歉,我没有Vista系统可以检查,但希望这些链接对你有帮助!
6
我使用了win32扩展包,并结合一些我找到的示例代码来进行操作。我在这个帖子上详细解释了整个过程。我不想在这里重复所有内容,但我可以给你一个简短的版本(想了解更多细节可以点击上面的链接)。
- 下载并安装pywin32扩展。
- 获取Tim Golden为这个任务写的代码。
- 把Tim的代码保存为你自己电脑上的一个模块。
- 调用你新模块的
property_sets
方法(记得提供必要的文件路径)。这个方法会返回一个生成器对象,可以进行迭代。下面是一个示例代码和输出。
(至少在XP系统上我这样做是有效的。)
例如:
import your_new_module
propgenerator= your_new_module.property_sets('[your file path]')
for name, properties in propgenerator:
print name
for k, v in properties.items ():
print " ", k, "=>", v
上面代码的输出结果会类似于以下内容:
DocSummaryInformation
PIDDSI_CATEGORY => qux
SummaryInformation
PIDSI_TITLE => foo
PIDSI_COMMENTS => flam
PIDSI_AUTHOR => baz
PIDSI_KEYWORDS => flim
PIDSI_SUBJECT => bar