Как получить теги файла в списке с помощью Python (Windows Vista)?

Я хочу создать что-то вроде облака тегов для различных папок, которые у меня есть, но, к сожалению, я не могу найти способ получить доступ к тегам файла в Windows Vista. Я попытался посмотреть модуль win32 и os.stat, но не могу найти способ. Могу ли я получить некоторую помощь по этому поводу?


person Code    schedule 03.10.2009    source источник


Ответы (4)


Я сделал это с помощью пакета расширений win32 вместе с некоторым демонстрационным кодом, который я нашел. Я разместил подробное объяснение процесса на эта тема. Я не хочу воспроизводить все это здесь, но вот краткая версия (щелкните по предыдущей ссылке, чтобы узнать подробности).

  1. Загрузите и установите расширение pywin32.
  2. Возьмите код, написанный Тимом Голденом именно для этой задачи. .
  3. Сохраните код Тима как модуль на своем компьютере.
  4. Вызовите метод property_sets вашего нового модуля (указав необходимый путь к файлу). Метод возвращает объект-генератор, который является итерируемым. См. следующий пример кода и выходных данных.

(Это работает для меня, по крайней мере, в XP.)

E.g.

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
person JellicleCat    schedule 01.05.2011
comment
Вы пробовали это на других версиях Windows, таких как Vista/Seven? - person mguillech; 12.10.2011
comment
Не пробовала. (И я не думаю, что когда-либо буду пробовать что-либо для Vista.) - person JellicleCat; 20.10.2011
comment
Он работает на всех ОС, хотя и совместим с python2. Требуется некоторая настройка для работы с python 3. Например. str вместо unicode и обновление оператора try except - person Adelin; 07.07.2017

Очевидно, вам нужно использовать API поиска Windows поиск System.Keywords — вы может получить доступ к API напрямую через ctypes или косвенно (требуется расширения win32) через COM Interop. Извините, у меня нет установки Vista, чтобы проверить, но я надеюсь, что эти ссылки будут полезны!

person Alex Martelli    schedule 03.10.2009

Похоже, что Windows сохраняет теги в файлах. Просто отметьте любое изображение и откройте изображение в блокноте и найдите что-нибудь XML. -like(RDF), и вы найдете там свой тег. Что ж... теперь мы знаем, что они действительно хранятся в файлах, но до сих пор не знаем, как ими манипулировать.

Но гугл в помощь. Я погуглил: API метаданных Windows

и нашел это: http://blogs.msdn.com/pix/archive/2006/12/06/photo-metadata-apis.aspx

person Tarnay Kálmán    schedule 03.10.2009

На самом деле существует 2 разных внедрения свойств документа (источник ).

  1. Реализация COM встраивает их непосредственно в сам файл: этот подход используется, например, для документов Office. Код Тима Голдена, описанный на этой странице, хорошо подходит для них.

  2. В NTFS 5 (Win2k или более поздней версии) вы можете добавить сводную информацию в любой файл, и она будет храниться в альтернативных потоках данных. Я предполагаю, что API поиска Windows будет работать на них, но я не проверял его.

person Pierre Carbonnelle    schedule 02.07.2012