Как получить информацию о MIME-типе / типе контента GTK из расширения файла - PullRequest
2 голосов
/ 20 апреля 2011

Мне не разрешен доступ к содержимому файла (по соображениям производительности), поэтому использование GFile недоступно

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

вам нужен g_content_type_guess.

В Python (GTK2):

import gio
gio.content_type_guess('foo.pdf')

Это вернет application/pdf

В Python (GTK3):

from gi.repository import Gio
content_type, val = Gio.content_type_guess('filename=foo.pdf', data=None)

content_type будет содержать application/pdf

Более подробная информация в документации: http://developer.gnome.org/gio/stable/gio-GContentType.html#g-content-type-guess

2 голосов
/ 20 апреля 2011

Похоже, что определение типа контента в GIO основано на расширении файла (при наличии расширения).

$ ./file /bin/sh
application/x-executable
$ cp /bin/sh a.wav
$ ./file a.wav
audio/x-wav

где ./file равно

#!/usr/bin/env python2
import sys, gio
f = gio.File(sys.argv[1])
info = f.query_info('standard::content-type')
print info.get_content_type()
...