- class QMimeDatabase#
QMimeDatabase
类维护一个MIME类型的数据库。 更多...大纲#
方法#
def
__init__()
def
allMimeTypes()
def
mimeTypeForUrl()
说明
本文档可能包含从 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()
方法以提高性能。返回
device
中的数据对应的MIME类型。总会返回一个有效的MIME类型。如果
device
中的数据不匹配任何已知的MIME类型数据,则返回默认MIME类型(application/octet-stream)。- mimeTypeForData(data)
- 参数::
data –
QByteArray
- 返回类型:
返回
data
对应的MIME类型。总会返回一个有效的MIME类型。如果
data
不匹配任何已知的MIME类型数据,则返回默认MIME类型(application/octet-stream)。- mimeTypeForFile(fileInfo[, mode=QMimeDatabase.MatchMode.MatchDefault])#
返回对应的
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])
使用
mode
返回文件名fileName
的MIME类型。这是一个重载函数。
- mimeTypeForFileNameAndData(fileName, device)#
为指定的
fileName
和device
数据返回MIME类型。当文件是远程的,并且我们在设备中开始下载其中的一些数据时,这个重载可以很有用。这使得对远程文件也能够进行完整的MIME类型匹配。
如果设备尚未打开,它将在此函数中打开,并在MIME类型检测完成后关闭。
总是返回一个有效的MIME类型。如果
device
数据不匹配任何已知的MIME类型数据,则返回默认MIME类型(application/octet-stream)。如果需要的话,此方法会查看文件名和文件内容。文件扩展名优先级高于内容,但如果文件扩展名未知,或者与多个MIME类型匹配时,则会使用内容。
- mimeTypeForFileNameAndData(fileName, data)
- 参数::
fileName - 字符串
data –
QByteArray
- 返回类型:
为指定的
fileName
和设备data
返回MIME类型。当文件是远程的,并且我们开始下载其数据的部分时,这个重载可以很有用。这同样允许对远程文件进行完整的MIME类型匹配。
总会返回一个有效的MIME类型。如果
data
不匹配任何已知的MIME类型数据,则返回默认MIME类型(application/octet-stream)。如果需要的话,此方法会查看文件名和文件内容。文件扩展名优先级高于内容,但如果文件扩展名未知,或者与多个MIME类型匹配时,则会使用内容。
如果找到,返回
nameOrAlias
的MIME类型,否则返回无效类型。返回
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()
代替。另请参阅
- suffixForFileName(fileName)#
- 参数::
fileName - 字符串
- 返回类型:
str
返回 MIME 数据库所知的文件
fileName
的后缀。这允许为 foo.tar.bz2 预选择 "tar.bz2",但对于 my.file.with.dots.txt 仍只有 "txt"。