class QMimeDatabase#

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

大纲#

方法#

说明

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

详细描述#

警告

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

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

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

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

在一个典型的 Unix 系统上,这将是一个 /usr/share/mime/packages/,但您也可以通过设置环境变量 XDG_DATA_DIRS 来扩展目录列表。例如,在 XDG_DATA_DIRS 中添加 /opt/myapp/share 将会导致搜索 /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 类型,请阅读 Shared Mime Info 规范 http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html

在 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()#
返回类型:

QMIME_TYPE 列表

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

这可以在向用户显示所有MIME类型时很有用,例如在MIME类型编辑器中。但在其他情况下除非真的有必要,请不要使用,优先使用mimeTypeForXxx()方法以提高性能。

mimeTypeForData(device)#
参数::

deviceQIODevice

返回类型:

QMimeType

返回device中的数据对应的MIME类型。

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

mimeTypeForData(data)
参数::

dataQByteArray

返回类型:

QMimeType

返回data对应的MIME类型。

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

mimeTypeForFile(fileInfo[, mode=QMimeDatabase.MatchMode.MatchDefault])#
参数::
返回类型:

QMimeType

返回对应的fileInfo的MIME类型。

总会返回一个有效的MIME类型。

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

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

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

fileInfo 可以指代绝对路径或相对路径。

mimeTypeForFile(fileName[, mode=QMimeDatabase.MatchMode.MatchDefault])
参数::
返回类型:

QMimeType

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

这是一个重载函数。

mimeTypeForFileNameAndData(fileName, device)#
参数::
返回类型:

QMimeType

为指定的 fileNamedevice 数据返回MIME类型。

当文件是远程的,并且我们在设备中开始下载其中的一些数据时,这个重载可以很有用。这使得对远程文件也能够进行完整的MIME类型匹配。

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

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

如果需要的话,此方法会查看文件名和文件内容。文件扩展名优先级高于内容,但如果文件扩展名未知,或者与多个MIME类型匹配时,则会使用内容。

mimeTypeForFileNameAndData(fileName, data)
参数::
返回类型:

QMimeType

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

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

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

如果需要的话,此方法会查看文件名和文件内容。文件扩展名优先级高于内容,但如果文件扩展名未知,或者与多个MIME类型匹配时,则会使用内容。

mimeTypeForName(nameOrAlias)#
参数::

nameOrAlias - 字符串

返回类型:

QMimeType

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

mimeTypeForUrl(url)#
参数::

urlQUrl

返回类型:

QMimeType

返回 url 的 MIME 类型。

如果 URL 是本地文件,则调用 mimeTypeForFile .

否则,只根据文件名进行匹配,除非是文件名意义不大的方案,如 HTTP。此方法始终返回 HTTP URL 的默认 MIME 类型,使用 QNetworkAccessManager 正确处理 HTTP URL。

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

mimeTypesForFileName(fileName)#
参数::

fileName - 字符串

返回类型:

QMIME_TYPE 列表

返回文件名 fileName 的 MIME 类型。

如果文件名不符合任何已知模式,则返回空列表。如果多个 MIME 类型匹配此文件,则返回所有这些建议类型。

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

另请参阅

mimeTypeForFile()

suffixForFileName(fileName)#
参数::

fileName - 字符串

返回类型:

str

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

这允许为 foo.tar.bz2 预选择 "tar.bz2",但对于 my.file.with.dots.txt 仍只有 "txt"。