Получить вид файла (не расширение) в файловой системе MacOSX с Python - PullRequest
0 голосов
/ 03 мая 2018

Какие библиотеки python можно использовать для получения подробных атрибутов файла в файловой системе MacOSX? У меня есть догадка, что он использует модуль os, но я не смог получить доступ к этим атрибутам через Python.

Самый важный атрибут, к которому я хочу получить доступ, - это файл 'kind'. Обратите внимание, что я говорю не о расширении, а о 4-м столбце на скриншоте ниже (взято из этого вопроса SuperUser ). Например, когда я перебираю эти файлы в этом каталоге, как я могу получить «Простой текстовый документ» в качестве вида для license.txt? Мое приложение представляет собой сценарий обработки файлов, который должен распознавать каталоги из файлов пакета keynote / pages / numbers.

Примечание о дублировании:

Также обратите внимание, что я видел этот конкретный вопрос SO , касающийся общих * файловых систем nix. Мой вопрос является подмножеством этого вопроса для файловых систем MacOS, которые могут иметь некоторые особенности, не обсуждаемые в этом вопросе. Если пользователь может предоставить пример HOW python-magic, который можно использовать для получения вида файла, то это даст более полезное решение, чем вышеупомянутая статья.

enter image description here

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете получить дату последнего изменения и размер файла за один раз из os.stat ().

Вид файла более сложный, так как есть как минимум два разных способа получения понятного человеку описания из ОС. Для этого вам нужна библиотека pyobjc, которая позволит вам а) запрашивать NSWorkspace и LaunchServices для данных, относящихся к UTI, или б) создавать NSURL для отдельных файлов и запрашивать их для их типа ресурса. Я считаю, что б) ближе к тому, что делает Finder.

Вот пример, иллюстрирующий оба эти метода:

from AppKit import NSWorkspace
from LaunchServices import UTTypeCopyDescription

from Cocoa import NSURL, NSURLLocalizedTypeDescriptionKey

from datetime import datetime
import os

for f in os.listdir("."):
    uti = NSWorkspace.sharedWorkspace().typeOfFile_error_(f, None)[0]
    desc = UTTypeCopyDescription(uti)

    url = NSURL.fileURLWithPath_(f)
    urlType = url.getResourceValue_forKey_error_(None, NSURLLocalizedTypeDescriptionKey, None)[1]

    sr = os.stat(f)
    size = sr.st_size
    date = datetime.fromtimestamp(sr.st_mtime).strftime('%Y-%m-%d %H:%M:%S')

    print("%-20s size=%s modified=%s uti=%s desc=%s url=%s" % (f, size, date, uti, desc, urlType))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...