mimetypes
— 將檔名對映到 MIME 型別¶
原始碼: Lib/mimetypes.py
mimetypes
模組在檔名或 URL 與與檔名副檔名關聯的 MIME 型別之間進行轉換。 提供從檔名到 MIME 型別以及從 MIME 型別到檔名副檔名的轉換;後一種轉換不支援編碼。
該模組提供一個類和許多便捷函式。 這些函式是此模組的常規介面,但某些應用程式也可能對該類感興趣。
下面描述的函式為此模組提供主要介面。 如果模組尚未初始化,它們將呼叫 init()
(如果它們依賴於 init()
設定的資訊)。
- mimetypes.guess_type(url, strict=True)¶
根據 url 給定的檔名、路徑或 URL 來猜測檔案的型別。 URL 可以是字串或 路徑類物件。
返回值是一個元組
(type, encoding)
,其中,如果無法猜測型別(缺少或未知字尾),則 type 為None
,或者為'type/subtype'
形式的字串,可用於 MIME content-type 標頭。對於無編碼,encoding 為
None
,或者為用於編碼的程式名稱(例如 compress 或 gzip)。 編碼適用於用作 Content-Encoding 標頭,不適用於用作 Content-Transfer-Encoding 標頭。 對映由表驅動。 編碼字尾區分大小寫; 型別字尾首先區分大小寫嘗試,然後不區分大小寫嘗試。可選引數 strict 是一個標誌,用於指定已知 MIME 型別的列表是否僅限於 在 IANA 註冊的 官方型別。 當 strict 為
True
(預設)時,僅支援 IANA 型別; 當 strict 為False
時,還會識別一些額外的非標準但常用的 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。可選引數 strict 與
guess_type()
函式具有相同的含義。
- mimetypes.guess_extension(type, strict=True)¶
根據 type 給定的 MIME 型別來猜測檔案的副檔名。 返回值是一個字串,其中包含檔名副檔名,包括前導點 (
'.'
)。 不能保證副檔名已與任何特定的資料流相關聯,但會由guess_type()
和guess_file_type()
對映到 MIME 型別 type。 如果無法為 type 猜測副檔名,則返回None
。可選引數 strict 與
guess_type()
函式具有相同的含義。
一些其他函式和資料項可用於控制模組的行為。
- mimetypes.init(files=None)¶
初始化內部資料結構。 如果給定,則 files 必須是應使用來擴充預設型別對映的檔名序列。 如果省略,則要使用的檔名取自
knownfiles
; 在 Windows 上,將載入當前的登錄檔設定。 在 files 或knownfiles
中命名的每個檔案優先於之前命名的檔案。 允許重複呼叫init()
。為 files 指定一個空列表將阻止應用系統預設值:只有來自內建列表的眾所周知的值才會存在。
如果 files 為
None
,則內部資料結構將完全重建為初始預設值。 這是一個穩定的操作,多次呼叫時會產生相同的結果。在 3.2 版本中更改: 以前,Windows 登錄檔設定會被忽略。
- mimetypes.read_mime_types(filename)¶
載入檔案 filename 中給定的型別對映(如果存在)。型別對映以字典形式返回,該字典將副檔名(包括前導點 (
'.'
))對映到'type/subtype'
形式的字串。如果檔案 filename 不存在或無法讀取,則返回None
。
- mimetypes.add_type(type, ext, strict=True)¶
新增從 MIME 型別 type 到副檔名 ext 的對映。當副檔名已知時,新型別將替換舊型別。當型別已知時,副檔名將新增到已知副檔名列表中。
當 strict 為
True
(預設值) 時,該對映將新增到官方 MIME 型別中,否則新增到非標準型別中。
- 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_types
和types_map
初始化。
- types_map_inv¶
包含兩個字典的元組,將 MIME 型別對映到檔名副檔名列表:第一個字典用於非標準型別,第二個字典用於標準型別。它們由
common_types
和types_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()
來解析檔案。如果 strict 為
True
,則資訊將新增到標準型別列表中,否則新增到非標準型別列表中。
- readfp(fp, strict=True)¶
從開啟的檔案 fp 載入 MIME 型別資訊。檔案必須具有標準
mime.types
檔案的格式。如果 strict 為
True
,則資訊將新增到標準型別列表中,否則新增到非標準型別列表中。
- read_windows_registry(strict=True)¶
從 Windows 登錄檔中載入 MIME 型別資訊。
可用性:Windows。
如果 strict 為
True
,則資訊將新增到標準型別列表中,否則新增到非標準型別列表中。在版本 3.2 中新增。
- add_type(type, ext, strict=True)¶
新增從 MIME 型別 type 到副檔名 ext 的對映。當副檔名已知時,新型別將替換舊型別。當型別已知時,副檔名將新增到已知副檔名列表中。
當 strict 為
True
(預設值) 時,該對映將新增到官方 MIME 型別中,否則新增到非標準型別中。