PySide6.QtCore.QMimeDatabase¶
- class QMimeDatabase¶
QMimeDatabase
类维护了一个MIME类型的数据库。更多…概要¶
方法¶
def
__init__()
def
allMimeTypes()
def
mimeTypeForUrl()
注意
本文档可能包含从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文件时)。返回所有可用的MIME类型列表。
这对于向用户显示所有MIME类型非常有用,例如在MIME类型编辑器中。不过,除非在其他情况下确实必要,否则不要使用,出于性能原因,建议使用
mimeTypeForXxx()
方法。返回
device
中数据的MIME类型。始终返回有效的MIME类型。如果
device
中的数据与任何已知的MIME类型数据不匹配,则返回默认的MIME类型(application/octet-stream)。- mimeTypeForData(data)
- Parameters:
数据 –
QByteArray
- Return type:
返回
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类型。这相当于使用QFile
作为输入设备调用mimeTypeForData
。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)
- Parameters:
fileName – str
data –
QByteArray
- Return type:
返回给定
fileName
和设备data
的MIME类型。当文件是远程的,并且我们已经开始下载其部分数据时,这个重载可能很有用。这允许对远程文件也进行完整的MIME类型匹配。
总是返回一个有效的MIME类型。如果
data
不匹配任何已知的MIME类型数据,则返回默认的MIME类型(application/octet-stream)。此方法在必要时会同时查看文件名和文件内容。文件扩展名优先于内容,但如果文件扩展名未知或匹配多个MIME类型,则将使用文件内容。
返回
nameOrAlias
的 MIME 类型,如果未找到则返回无效类型。返回
url
的 MIME 类型。如果URL是本地文件,这将调用
mimeTypeForFile
。否则,匹配仅基于文件名进行,除了像HTTP这样的方案,其中文件名意义不大。此方法始终返回HTTP URL的默认mimetype,使用QNetworkAccessManager来正确处理HTTP URL。
始终返回有效的MIME类型。如果
url
不匹配任何已知的MIME类型数据,则返回默认的MIME类型(application/octet-stream)。返回文件名
fileName
的 MIME 类型。如果文件名不匹配任何已知模式,则返回一个空列表。如果多个MIME类型匹配此文件,则返回所有匹配的类型。
此函数不会尝试打开文件。要在确定MIME类型时也使用内容,请改用
mimeTypeForFile()
或mimeTypeForFileNameAndData()
。另请参阅
- suffixForFileName(fileName)¶
- Parameters:
fileName – str
- Return type:
字符串
返回文件
fileName
的后缀,如MIME数据库所知。这允许为foo.tar.bz2预先选择“tar.bz2”,但仍然只为my.file.with.dots.txt选择“txt”。