mimetypes — 將檔名對映到 MIME 型別

原始碼: Lib/mimetypes.py


mimetypes 模組在檔名或 URL 與與檔名副檔名關聯的 MIME 型別之間進行轉換。 提供從檔名到 MIME 型別以及從 MIME 型別到檔名副檔名的轉換;後一種轉換不支援編碼。

該模組提供一個類和許多便捷函式。 這些函式是此模組的常規介面,但某些應用程式也可能對該類感興趣。

下面描述的函式為此模組提供主要介面。 如果模組尚未初始化,它們將呼叫 init() (如果它們依賴於 init() 設定的資訊)。

mimetypes.guess_type(url, strict=True)

根據 url 給定的檔名、路徑或 URL 來猜測檔案的型別。 URL 可以是字串或 路徑類物件

返回值是一個元組 (type, encoding),其中,如果無法猜測型別(缺少或未知字尾),則 typeNone,或者為 'type/subtype' 形式的字串,可用於 MIME content-type 標頭。

對於無編碼,encodingNone,或者為用於編碼的程式名稱(例如 compressgzip)。 編碼適用於用作 Content-Encoding 標頭,適用於用作 Content-Transfer-Encoding 標頭。 對映由表驅動。 編碼字尾區分大小寫; 型別字尾首先區分大小寫嘗試,然後不區分大小寫嘗試。

可選引數 strict 是一個標誌,用於指定已知 MIME 型別的列表是否僅限於 在 IANA 註冊的 官方型別。 當 strictTrue(預設)時,僅支援 IANA 型別; 當 strictFalse 時,還會識別一些額外的非標準但常用的 MIME 型別。

在 3.8 版本中更改: 添加了對作為 路徑類物件url 的支援。

自 3.13 版本棄用: 傳遞檔案路徑而不是 URL 是 軟棄用 的。為此,請使用 guess_file_type()

mimetypes.guess_file_type(path, *, strict=True)

根據 path 給定的路徑來猜測檔案的型別。 與 guess_type() 函式類似,但接受路徑而不是 URL。 路徑可以是字串、位元組物件或 路徑類物件

在 3.13 版本中新增。

mimetypes.guess_all_extensions(type, strict=True)

根據 type 給定的 MIME 型別來猜測檔案的副檔名。 返回值是一個字串列表,其中包含所有可能的檔名副檔名,包括前導點 ('.')。 不能保證副檔名已與任何特定的資料流相關聯,但會由 guess_type()guess_file_type() 對映到 MIME 型別 type

可選引數 strictguess_type() 函式具有相同的含義。

mimetypes.guess_extension(type, strict=True)

根據 type 給定的 MIME 型別來猜測檔案的副檔名。 返回值是一個字串,其中包含檔名副檔名,包括前導點 ('.')。 不能保證副檔名已與任何特定的資料流相關聯,但會由 guess_type()guess_file_type() 對映到 MIME 型別 type。 如果無法為 type 猜測副檔名,則返回 None

可選引數 strictguess_type() 函式具有相同的含義。

一些其他函式和資料項可用於控制模組的行為。

mimetypes.init(files=None)

初始化內部資料結構。 如果給定,則 files 必須是應使用來擴充預設型別對映的檔名序列。 如果省略,則要使用的檔名取自 knownfiles; 在 Windows 上,將載入當前的登錄檔設定。 在 filesknownfiles 中命名的每個檔案優先於之前命名的檔案。 允許重複呼叫 init()

files 指定一個空列表將阻止應用系統預設值:只有來自內建列表的眾所周知的值才會存在。

如果 filesNone,則內部資料結構將完全重建為初始預設值。 這是一個穩定的操作,多次呼叫時會產生相同的結果。

在 3.2 版本中更改: 以前,Windows 登錄檔設定會被忽略。

mimetypes.read_mime_types(filename)

載入檔案 filename 中給定的型別對映(如果存在)。型別對映以字典形式返回,該字典將副檔名(包括前導點 ('.'))對映到 'type/subtype' 形式的字串。如果檔案 filename 不存在或無法讀取,則返回 None

mimetypes.add_type(type, ext, strict=True)

新增從 MIME 型別 type 到副檔名 ext 的對映。當副檔名已知時,新型別將替換舊型別。當型別已知時,副檔名將新增到已知副檔名列表中。

strictTrue (預設值) 時,該對映將新增到官方 MIME 型別中,否則新增到非標準型別中。

mimetypes.inited

指示全域性資料結構是否已初始化的標誌。該標誌由 init() 設定為 True

mimetypes.knownfiles

常用安裝的型別對映檔名的列表。這些檔案通常命名為 mime.types,並由不同的軟體包安裝在不同的位置。

mimetypes.suffix_map

將字尾對映到字尾的字典。這用於識別編碼檔案,其中編碼和型別由同一副檔名指示。例如,.tgz 副檔名對映到 .tar.gz,以允許單獨識別編碼和型別。

mimetypes.encodings_map

將檔名副檔名對映到編碼型別的字典。

mimetypes.types_map

將檔名副檔名對映到 MIME 型別的字典。

mimetypes.common_types

將檔名副檔名對映到非標準但常見的 MIME 型別的字典。

模組的使用示例

>>> import mimetypes
>>> mimetypes.init()
>>> mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'application/x-tar-gz'

MimeTypes 物件

對於可能需要多個 MIME 型別資料庫的應用程式,MimeTypes 類可能很有用;它提供了類似於 mimetypes 模組的介面。

class mimetypes.MimeTypes(filenames=(), strict=True)

此類表示 MIME 型別資料庫。預設情況下,它提供對與此模組其餘部分相同的資料庫的訪問。初始資料庫是該模組提供的副本,並且可以透過使用 read()readfp() 方法將其他 mime.types 樣式的檔案載入到資料庫中進行擴充套件。如果不需要預設資料,則在載入其他資料之前也可以清除對映字典。

可選的 filenames 引數可用於導致在預設資料庫之上載入其他檔案。

suffix_map

將字尾對映到字尾的字典。這用於識別編碼檔案,其中編碼和型別由同一副檔名指示。例如,.tgz 副檔名對映到 .tar.gz,以允許單獨識別編碼和型別。這最初是模組中定義的全域性 suffix_map 的副本。

encodings_map

將檔名副檔名對映到編碼型別的字典。這最初是模組中定義的全域性 encodings_map 的副本。

types_map

包含兩個字典的元組,將檔名副檔名對映到 MIME 型別:第一個字典用於非標準型別,第二個字典用於標準型別。它們由 common_typestypes_map 初始化。

types_map_inv

包含兩個字典的元組,將 MIME 型別對映到檔名副檔名列表:第一個字典用於非標準型別,第二個字典用於標準型別。它們由 common_typestypes_map 初始化。

guess_extension(type, strict=True)

類似於 guess_extension() 函式,使用作為物件一部分儲存的表。

guess_type(url, strict=True)

類似於 guess_type() 函式,使用作為物件一部分儲存的表。

guess_file_type(path, *, strict=True)

類似於 guess_file_type() 函式,使用作為物件一部分儲存的表。

在 3.13 版本中新增。

guess_all_extensions(type, strict=True)

類似於 guess_all_extensions() 函式,使用作為物件一部分儲存的表。

read(filename, strict=True)

從名為 filename 的檔案載入 MIME 資訊。這使用 readfp() 來解析檔案。

如果 strictTrue,則資訊將新增到標準型別列表中,否則新增到非標準型別列表中。

readfp(fp, strict=True)

從開啟的檔案 fp 載入 MIME 型別資訊。檔案必須具有標準 mime.types 檔案的格式。

如果 strictTrue,則資訊將新增到標準型別列表中,否則新增到非標準型別列表中。

read_windows_registry(strict=True)

從 Windows 登錄檔中載入 MIME 型別資訊。

可用性:Windows。

如果 strictTrue,則資訊將新增到標準型別列表中,否則新增到非標準型別列表中。

在版本 3.2 中新增。

add_type(type, ext, strict=True)

新增從 MIME 型別 type 到副檔名 ext 的對映。當副檔名已知時,新型別將替換舊型別。當型別已知時,副檔名將新增到已知副檔名列表中。

strictTrue (預設值) 時,該對映將新增到官方 MIME 型別中,否則新增到非標準型別中。