mimetypes --- 映射文件名到 MIME 類(lèi)型?

源代碼: Lib/mimetypes.py


mimetypes 模塊可以在文件名或 URL 和關(guān)聯(lián)到文件擴展名的 MIME 類(lèi)型之間執行轉換。 所提供的轉換包括從文件名到 MIME 類(lèi)型和從 MIME 類(lèi)型到文件擴展名;后一種轉換不支持編碼格式。

該模塊提供了一個(gè)類(lèi)和一些便捷函數。 這些函數是該模塊通常的接口,但某些應用程序可能也會(huì )希望使用類(lèi)。

下列函數提供了此模塊的主要接口。 如果此模塊尚未被初始化,它們將會(huì )調用 init(),如果它們依賴(lài)于 init() 所設置的信息的話(huà)。

mimetypes.guess_type(url, strict=True)?

根據 url 給出的文件名、路徑或 URL 來(lái)猜測文件的類(lèi)型,URL 可以為字符串或 path-like object。

返回值是一個(gè)元組 (type, encoding) 其中 type 在無(wú)法猜測(后綴不存在或者未知)時(shí)為 None,或者為 'type/subtype' 形式的字符串,可以作為 MIME content-type 標頭。

encoding 在無(wú)編碼格式時(shí)為 None,或者為程序所用的編碼格式 (例如 compressgzip)。 它可以作為 Content-Encoding 標頭,但 不可 作為 Content-Transfer-Encoding 標頭。 映射是表格驅動(dòng)的。 編碼格式前綴對大小寫(xiě)敏感;類(lèi)型前綴會(huì )先以大小寫(xiě)敏感方式檢測再以大小寫(xiě)不敏感方式檢測。

可選的 strict 參數是一個(gè)旗標,指明要將已知 MIME 類(lèi)型限制在 IANA 已注冊 的官方類(lèi)型之內。 當 strictTrue 時(shí)(默認值),則僅支持 IANA 類(lèi)型;當 strictFalse 時(shí),則還支持某些附加的非標準但常用的 MIME 類(lèi)型。

在 3.8 版更改: 增加了 path-like object 作為 url 的支持。

mimetypes.guess_all_extensions(type, strict=True)?

根據由 type 給出的文件 MIME 類(lèi)型猜測其擴展名。 返回值是由所有可能的文件擴展名組成的字符串列表,包括開(kāi)頭的點(diǎn)號 ('.')。 這些擴展名不保證能關(guān)聯(lián)到任何特定的數據流,但是將會(huì )由 guess_type() 映射到 MIME 類(lèi)型 type。

可選的 strict 參數具有與 guess_type() 函數一致的含義。

mimetypes.guess_extension(type, strict=True)?

根據由 type 給出的文件 MIME 類(lèi)型猜測其擴展名。 返回值是一個(gè)表示文件擴展名的字符串,包括開(kāi)頭的點(diǎn)號 ('.')。 該擴展名不保證能關(guān)聯(lián)到任何特定的數據流,但是將會(huì )由 guess_type() 映射到 MIME 類(lèi)型 type。 如果不能猜測出 type 的擴展名,則將返回 None。

可選的 strict 參數具有與 guess_type() 函數一致的含義。

有一些附加函數和數據項可被用于控制此模塊的行為。

mimetypes.init(files=None)?

初始化內部數據結構。 files 如果給出則必須是一個(gè)文件名序列,它應當被用于協(xié)助默認的類(lèi)型映射。 如果省略則要使用的文件名會(huì )從 knownfiles 中獲??; 在 Windows 上,將會(huì )載入當前注冊表設置。 在 filesknownfiles 中指定的每個(gè)文件名的優(yōu)先級將高于在它之前的文件名。 init() 允許被重復調用。

files 指定一個(gè)空列表將防止應用系統默認選項:將只保留來(lái)自?xún)戎昧斜淼某S弥怠?/p>

如果 filesNone 則內部數據結構會(huì )完全重建為其初始默認值。 這是一個(gè)穩定操作并將在多次調用時(shí)產(chǎn)生相同的結果。

在 3.2 版更改: 在之前版本中,Windows 注冊表設置會(huì )被忽略。

mimetypes.read_mime_types(filename)?

載入在文件 filename 中給定的類(lèi)型映射,如果文件存在的話(huà)。 返回的類(lèi)型映射會(huì )是一個(gè)字典,其中的鍵值對為文件擴展名包括開(kāi)頭的點(diǎn)號 ('.') 與 'type/subtype' 形式的字符串。 如果文件 filename 不存在或無(wú)法被讀取,則返回 None。

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

添加一個(gè)從 MIME 類(lèi)型 type 到擴展名 ext 的映射。 當擴展名已知時(shí),新類(lèi)型將替代舊類(lèi)型。 當類(lèi)型已知時(shí),擴展名將被添加到已知擴展名列表。

strictTrue 時(shí)(默認值),映射將被添加到官方 MIME 類(lèi)型,否則添加到非標準類(lèi)型。

mimetypes.inited?

指明全局數據結構是否已被初始化的旗標。 這會(huì )由 init() 設為 True。

mimetypes.knownfiles?

通常安裝的類(lèi)型映射文件名列表。 這些文件一般被命名為 mime.types 并會(huì )由不同的包安裝在不同的位置。

mimetypes.suffix_map?

將后綴映射到其他后綴的字典。 它被用來(lái)允許識別已編碼的文件,其編碼格式和類(lèi)型是由相同的擴展名來(lái)指明的。 例如,.tgz 擴展名被映射到 .tar.gz 以允許編碼格式和類(lèi)型被分別識別。

mimetypes.encodings_map?

映射文件擴展名到編碼格式類(lèi)型的字典。

mimetypes.types_map?

映射文件擴展名到 MIME 類(lèi)型的字典。

mimetypes.common_types?

映射文件擴展名到非標準但常見(jiàn)的 MIME 類(lèi)型的字典。

此模塊一個(gè)使用示例:

>>>
>>> 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 對象?

MimeTypes 類(lèi)可以被用于那些需要多個(gè) MIME 類(lèi)型數據庫的應用程序;它提供了與 mimetypes 模塊所提供的類(lèi)似接口。

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

這個(gè)類(lèi)表示 MIME 類(lèi)型數據庫。 默認情況下,它提供了對與此模塊其余部分一致的數據庫的訪(fǎng)問(wèn)權限。 這個(gè)初始數據庫是此模塊所提供數據庫的一個(gè)副本,并可以通過(guò)使用 read()readfp() 方法將附加的 mime.types 樣式文載入到數據庫中來(lái)進(jìn)行擴展。 如果不需要默認數據的話(huà)這個(gè)映射字典也可以在載入附加數據之前先被清空。

可選的 filenames 形參可被用來(lái)讓附加文件被載入到默認數據庫“之上”。

suffix_map?

將后綴映射到其他后綴的字典。 它被用來(lái)允許識別已編碼的文件,其編碼格式和類(lèi)型是由相同的擴展名來(lái)指明的。 例如,.tgz 擴展名被映射到 .tar.gz 以允許編碼格式和類(lèi)型被分別識別。 這是在模塊中定義的全局 suffix_map 的一個(gè)副本。

encodings_map?

映射文件擴展名到編碼格式類(lèi)型的字典。 這是在模塊中定義的全局 encodings_map 的一個(gè)副本。

types_map?

包含兩個(gè)字典的元組,將文件擴展名映射到 MIME 類(lèi)型:第一個(gè)字典針對非標準類(lèi)型而第二個(gè)字典針對標準類(lèi)型。 它們會(huì )由 common_typestypes_map 來(lái)初始化。

types_map_inv?

包含兩個(gè)字典的元組,將 MIME 類(lèi)型映射到文件擴展名列表:第一個(gè)字典針對非標準類(lèi)型而第二個(gè)字典針對標準類(lèi)型。 它們會(huì )由 common_typestypes_map 來(lái)初始化。

guess_extension(type, strict=True)?

類(lèi)似于 guess_extension() 函數,使用存儲的表作為對象的一部分。

guess_type(url, strict=True)?

類(lèi)似于 guess_type() 函數,使用存儲的表作為對象的一部分。

guess_all_extensions(type, strict=True)?

類(lèi)似于 guess_all_extensions() 函數,使用存儲的表作為對象的一部分。

read(filename, strict=True)?

從名稱(chēng)為 filename 的文件載入 MIME 信息。 此方法使用 readfp() 來(lái)解析文件。

如果 strictTrue,信息將被添加到標準類(lèi)型列表,否則添加到非標準類(lèi)型列表。

readfp(fp, strict=True)?

從打開(kāi)的文件 fp 載入 MIME 類(lèi)型信息。 文件必須具有標準 mime.types 文件的格式。

如果 strictTrue,信息將被添加到標準類(lèi)型列表,否則添加到非標準類(lèi)型列表。

read_windows_registry(strict=True)?

從 Windows 注冊表載入 MIME 類(lèi)型信息。

可用性: Windows。

如果 strictTrue,信息將被添加到標準類(lèi)型列表,否則添加到非標準類(lèi)型列表。

3.2 新版功能.