【问题标题】:How do you retrieve the tags of a file in a list with Python (Windows Vista)?如何使用 Python (Windows Vista) 检索列表中文件的标签?
【发布时间】:2009-10-03 00:40:49
【问题描述】:

我想为我拥有的各种文件夹制作一些标签云,但不幸的是,我似乎找不到在 Windows Vista 中访问文件标签的方法。我尝试查看 win32 模块和 os.stat,但似乎找不到方法。我可以得到一些帮助吗?

【问题讨论】:

    标签: python windows-vista tags


    【解决方案1】:

    我使用了 win32 扩展包以及我找到的一些演示代码。我在this thread 上发布了该过程的详细说明。我不想在这里全部复制,但这里是简短的版本(点击前面的链接了解详细信息)。

    1. 下载并安装pywin32 extension
    2. Grab the codeTim 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
    

    【讨论】:

    • 您是否在其他 Windows 版本(例如 Vista/Seven)上尝试过此操作?
    • 没试过。 (而且我认为我不会为 Vista 尝试任何东西。)
    • 它适用于所有操作系统,尽管它与 python2 兼容。需要一些调整才能使用 python 3。例如str 代替 unicode 并更新了 try except 声明
    【解决方案2】:

    显然,您需要使用Windows Search API 查找System.Keywords——您可以通过ctypes 直接访问API,或通过API 的COM Interop 程序集间接访问(需要win32 extensions)。抱歉,我没有要检查的 vista 安装,但我希望这些链接有用!

    【讨论】:

      【解决方案3】:

      Windows 似乎将标签存储在文件中。 只需标记任何图像打开图像在记事本中查找一些XML -like(RDF) 你会在那里找到你的标签。嗯......现在我们知道它们确实存储在文件中,但我们仍然不知道如何操作它们。

      但谷歌是救援。我用谷歌搜索:windows 元数据 api

      发现了这个:http://blogs.msdn.com/pix/archive/2006/12/06/photo-metadata-apis.aspx

      【讨论】:

        【解决方案4】:

        文档属性实际上有 2 种不同的实现方式 (source)。

        1. COM 实现将它们直接嵌入文件本身:例如,这是用于 Office 文档的方法。本页描述的 Tim Golden 的代码非常适合这些。

        2. 在 NTFS 5(Win2k 或更高版本)上,您可以将摘要信息添加到任何文件,并将其存储在备用数据流中。我想 Windows Search API 可以处理这些,但我还没有测试过。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多