如何在Windows Vista中用Python获取文件标签?

3 投票
5 回答
8742 浏览
提问于 2025-04-15 14:46

我想为我有的几个文件夹做一个标签云,但不幸的是,我找不到在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扩展包,并结合一些我找到的示例代码来进行操作。我在这个帖子上详细解释了整个过程。我不想在这里重复所有内容,但我可以给你一个简短的版本(想了解更多细节可以点击上面的链接)。

  1. 下载并安装pywin32扩展
  2. 获取Tim Golden为这个任务写的代码
  3. 把Tim的代码保存为你自己电脑上的一个模块。
  4. 调用你新模块的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

撰写回答