通过python获取Ubuntu操作系统中特定文件类型的默认图标

通过python获取Ubuntu操作系统中特定文件类型的默认图标,python,ubuntu,gtk,Python,Ubuntu,Gtk,在我的ubuntu PC中,通过python脚本,我需要获得特定文件类型图标的默认路径 作为: 获取图标路径(“py”) /usr/share/icons/Humanity/mimes/48/text-x-python.svg 注:我读了这个问题,它只对当前存在的文件起作用 GNU/Linux桌面环境不为文件名后缀(扩展名)分配图标。相反,它们将图标指定给Internet媒体类型(MIME类型),文件的类型可能由文件名后缀决定,也可能不由文件名后缀决定(也可能涉及内容嗅探)。您可以使用标准库中的

在我的ubuntu PC中,通过python脚本,我需要获得特定文件类型图标的默认路径

作为:

获取图标路径(“py”)

/usr/share/icons/Humanity/mimes/48/text-x-python.svg

注:我读了这个问题,它只对当前存在的文件起作用


GNU/Linux桌面环境不为文件名后缀(扩展名)分配图标。相反,它们将图标指定给Internet媒体类型(MIME类型),文件的类型可能由文件名后缀决定,也可能不由文件名后缀决定(也可能涉及内容嗅探)。您可以使用标准库中的模块根据后缀猜测媒体类型。然后,从那时起,就像你链接的问题一样

import mimetypes

import gio
import gtk

def get_icon_path(extension, size=32):
    type_, encoding = mimetypes.guess_type('x.' + extension)
    if type_:
        icon = gio.content_type_get_icon(type_)
        theme = gtk.icon_theme_get_default()
        info = theme.choose_icon(icon.get_names(), size, 0)
        if info:
            return info.get_filename()

GNU/Linux桌面环境不为文件名后缀(扩展名)分配图标。相反,它们将图标指定给Internet媒体类型(MIME类型),文件的类型可能由文件名后缀决定,也可能不由文件名后缀决定(也可能涉及内容嗅探)。您可以使用标准库中的模块根据后缀猜测媒体类型。然后,从那时起,就像你链接的问题一样

import mimetypes

import gio
import gtk

def get_icon_path(extension, size=32):
    type_, encoding = mimetypes.guess_type('x.' + extension)
    if type_:
        icon = gio.content_type_get_icon(type_)
        theme = gtk.icon_theme_get_default()
        info = theme.choose_icon(icon.get_names(), size, 0)
        if info:
            return info.get_filename()
对于GTK3,使用

from gi.repository import Gtk, Gio

def get_icon_path(mimetype, size=32):
    icon = Gio.content_type_get_icon(mimetype)
    theme = Gtk.IconTheme.get_default()
    info = theme.choose_icon(icon.get_names(), size, 0)
    if info:
        print(info.get_filename())
对于GTK3,使用

from gi.repository import Gtk, Gio

def get_icon_path(mimetype, size=32):
    icon = Gio.content_type_get_icon(mimetype)
    theme = Gtk.IconTheme.get_default()
    info = theme.choose_icon(icon.get_names(), size, 0)
    if info:
        print(info.get_filename())

if info:return info.get_filename()。尽管系统知道文件类型,但是否可以不返回任何内容。@esnadr不知道,只是出于防御。在GTK3中,您将如何执行相同的操作?@xuhdev如果我的代码不能直接移植到GTK+3,我认为最好单独问一个问题。我已经发布了GTK3的另一个答案。如果信息:返回信息。获取文件名()。尽管系统知道文件类型,但是否可能返回None。@esnadr不知道,只是出于防御。在GTK3中,您将如何执行相同的操作?@xuhdev如果我的代码没有直接移植到GTK+3,我认为最好单独问一个问题。我已经发布了GTK3的另一个答案。