PySide6.QtCore.QMimeDatabase

class QMimeDatabase

QMimeDatabase 类维护了一个MIME类型的数据库。更多

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

MIME类型数据库由freedesktop.org的shared-mime-info项目提供。如果在系统上找不到MIME类型数据库,例如在大多数Windows、macOS和iOS系统上,Qt将使用其自己的副本。

想要定义自定义MIME类型的应用程序需要将XML文件安装到搜索MIME定义的位置。这些位置可以通过以下方式查询:

QStandardPaths.locateAll(QStandardPaths.GenericDataLocation, "mime/packages",
                          QStandardPaths.LocateDirectory)

在典型的Unix系统上,这将是/usr/share/mime/packages/,但也可以通过设置环境变量XDG_DATA_DIRS来扩展目录列表。例如,将/opt/myapp/share添加到XDG_DATA_DIRS将导致搜索/opt/myapp/share/mime/packages/以获取MIME定义。

这是一个MIME XML的示例:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/vnd.qt.qmakeprofile">
    <comment xml:lang="en">Qt qmake Profile</comment>
    <glob pattern="*.pro" weight="50"/>
  </mime-type>
</mime-info>

有关XML MIME定义语法的更多详细信息,包括定义“魔法”以便基于数据检测MIME类型,请阅读http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html上的共享MIME信息规范。

在Unix系统上,为了提高性能,使用了二进制缓存。这个缓存是通过命令“update-mime-database path”生成的,其中path在上面的例子中是/opt/myapp/share/mime。在安装MIME类型定义文件时,请确保运行此命令。

db = QMimeDatabase()
mime = db.mimeTypeForFile(fileName)
if mime.inherits("text/plain"):
    # The file is plain text, we can display it in a QTextEdit

另请参阅

QMimeType MIME类型浏览器

class MatchMode

此枚举指定了如何将文件与MIME类型进行匹配。

常量

描述

QMimeDatabase.MatchDefault

文件名和内容都用于查找匹配项

QMimeDatabase.MatchExtension

仅使用文件名来查找匹配项

QMimeDatabase.MatchContent

文件内容用于寻找匹配

__init__()

构造一个QMimeDatabase对象。

每次需要执行查找时创建QMimeDatabase的实例是完全没问题的。MIME类型的解析是按需进行的(当安装了shared-mime-info时)或在第一个实例被构造时(当直接解析XML文件时)。

allMimeTypes()
Return type:

QMimeType的列表

返回所有可用的MIME类型列表。

这对于向用户显示所有MIME类型非常有用,例如在MIME类型编辑器中。不过,除非在其他情况下确实必要,否则不要使用,出于性能原因,建议使用mimeTypeForXxx()方法。

mimeTypeForData(device)
Parameters:

设备QIODevice

Return type:

QMimeType

返回device中数据的MIME类型。

始终返回有效的MIME类型。如果device中的数据与任何已知的MIME类型数据不匹配,则返回默认的MIME类型(application/octet-stream)。

mimeTypeForData(data)
Parameters:

数据QByteArray

Return type:

QMimeType

返回 data 的 MIME 类型。

总是返回一个有效的MIME类型。如果data不匹配任何已知的MIME类型数据,则返回默认的MIME类型(application/octet-stream)。

mimeTypeForFile(fileInfo[, mode=QMimeDatabase.MatchMode.MatchDefault])
Parameters:
Return type:

QMimeType

返回 fileInfo 的 MIME 类型。

始终返回有效的MIME类型。

默认的匹配算法在必要时会同时查看文件名和文件内容。文件扩展名优先于内容,但如果文件扩展名未知或匹配多个MIME类型,则将使用内容。如果fileInfo是Unix符号链接,则将使用它指向的文件。如果文件不匹配任何已知的模式或数据,则返回默认的MIME类型(application/octet-stream)。

mode设置为MatchExtension时,仅使用文件名,而不使用文件内容。文件甚至不需要存在。如果文件名不匹配任何已知模式,则返回默认的MIME类型(application/octet-stream)。如果有多个MIME类型匹配此文件,则返回第一个(按字母顺序)。

mode设置为MatchContent时,并且文件可读,仅使用文件内容来确定MIME类型。这相当于使用QFile作为输入设备调用mimeTypeForData

fileInfo 可能指的是绝对路径或相对路径。

mimeTypeForFile(fileName[, mode=QMimeDatabase.MatchMode.MatchDefault])
Parameters:
Return type:

QMimeType

返回使用mode为名为fileName的文件提供的MIME类型。

这是一个重载函数。

mimeTypeForFileNameAndData(fileName, device)
Parameters:
Return type:

QMimeType

返回给定fileNamedevice数据的MIME类型。

当文件位于远程位置,并且我们已经在设备上开始下载其部分数据时,此重载可能很有用。这允许对远程文件也进行完整的MIME类型匹配。

如果设备未打开,此函数将打开它,并在MIME类型检测完成后关闭。

始终返回有效的MIME类型。如果device数据与任何已知的MIME类型数据不匹配,则返回默认的MIME类型(application/octet-stream)。

此方法在必要时会同时查看文件名和文件内容。文件扩展名优先于内容,但如果文件扩展名未知或匹配多个MIME类型,则将使用文件内容。

mimeTypeForFileNameAndData(fileName, data)
Parameters:
Return type:

QMimeType

返回给定fileName和设备data的MIME类型。

当文件是远程的,并且我们已经开始下载其部分数据时,这个重载可能很有用。这允许对远程文件也进行完整的MIME类型匹配。

总是返回一个有效的MIME类型。如果data不匹配任何已知的MIME类型数据,则返回默认的MIME类型(application/octet-stream)。

此方法在必要时会同时查看文件名和文件内容。文件扩展名优先于内容,但如果文件扩展名未知或匹配多个MIME类型,则将使用文件内容。

mimeTypeForName(nameOrAlias)
Parameters:

nameOrAlias – str

Return type:

QMimeType

返回 nameOrAlias 的 MIME 类型,如果未找到则返回无效类型。

mimeTypeForUrl(url)
Parameters:

urlQUrl

Return type:

QMimeType

返回 url 的 MIME 类型。

如果URL是本地文件,这将调用mimeTypeForFile

否则,匹配仅基于文件名进行,除了像HTTP这样的方案,其中文件名意义不大。此方法始终返回HTTP URL的默认mimetype,使用QNetworkAccessManager来正确处理HTTP URL。

始终返回有效的MIME类型。如果url不匹配任何已知的MIME类型数据,则返回默认的MIME类型(application/octet-stream)。

mimeTypesForFileName(fileName)
Parameters:

fileName – str

Return type:

QMimeType的列表

返回文件名 fileName 的 MIME 类型。

如果文件名不匹配任何已知模式,则返回一个空列表。如果多个MIME类型匹配此文件,则返回所有匹配的类型。

此函数不会尝试打开文件。要在确定MIME类型时也使用内容,请改用mimeTypeForFile()mimeTypeForFileNameAndData()

另请参阅

mimeTypeForFile()

suffixForFileName(fileName)
Parameters:

fileName – str

Return type:

字符串

返回文件fileName的后缀,如MIME数据库所知。

这允许为foo.tar.bz2预先选择“tar.bz2”,但仍然只为my.file.with.dots.txt选择“txt”。