2012-09-23 2 views
2

Я пытаюсь получить комментарии с помощью python. Все, что мне теперь нужно - это возможность для popen возвращать то, что обычно выводит оболочка, если работает то же самое. как только у меня есть строка в python, тогда я могу правильно ее фильтровать.Получите комментарии от файла с помощью python

import sys, os, glob 

paths = glob.glob("*.wav") 
print paths 

for soundFile in paths: 
    #soundFile = os.path.abspath(soundFile) 
    result = os.popen("xattr -p com.apple.metadata:kMDItemFinderComment "+soundFile+" | xxd -r -p |plutil -convert xml1 -o - -") 
    print result 

ответ

0

Я не знаю, что эквивалент этого будет в Python, но вы можете использовать для print the extended attribute as an XML property list некоторого атрибута.

#!/usr/bin/env ruby -KU 

require 'cgi' 

plist = `xattr -p com.apple.metadata:kMDItemFinderComment test.txt | 
xxd -r -p | plutil -convert xml1 -o - -` 
puts CGI.unescapeHTML(plist.scan(/<string>(.*?)<\/string>/m)[0][0]) 

Я забыл о mdls -n kMDItemFinderComment. Finder doesn't always store the comments in extended attributes в любом случае.

+0

Это меня ближе, потому что я могу положить xattr в popen. но я не знаю, как получить popen, чтобы вернуть то, что оболочка обычно возвращается в этой ситуации. – openCivilisation

0

Я знаю, что этот вопрос задан несколько месяцев назад, но это то, как я могу рассказать о комментариях через Python & popen.

cmd = subprocess.Popen(['mdls', '-name', 'kMDItemFinderComment',pathtofile], stderr=subprocess.STDOUT,stdout = subprocess.PIPE) 
out,err = cmd.communicate() 

print out 

Так что, используя mdls в отличие от некоторого атрибута, если это имеет значение для вас, но мне кажется, что вы могли бы продолжать использовать командную строку некоторого атрибута вы построили, если вы просто скажите POPEN куда послать STDOUT, а затем использовать .communicate().

+0

Извините, текст, похоже, не правильно вписался в ответ. Должна быть новая строка после «subprocess.PIPE» »и« out, err = ... » – user2355063

Смежные вопросы