mimetypes --- 映射文件名到 MIME 類型?

源代碼: Lib/mimetypes.py


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

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

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

mimetypes.guess_type(url, strict=True)?

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

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

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

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

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

mimetypes.guess_all_extensions(type, strict=True)?

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

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

mimetypes.guess_extension(type, strict=True)?

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

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

有一些附加函數(shù)和數(shù)據(jù)項(xiàng)可被用于控制此模塊的行為。

mimetypes.init(files=None)?

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

files 指定一個(gè)空列表將防止應(yīng)用系統(tǒng)默認(rèn)選項(xiàng):將只保留來自內(nèi)置列表的常用值。

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

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

mimetypes.read_mime_types(filename)?

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

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

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

當(dāng) strictTrue 時(shí)(默認(rèn)值),映射將被添加到官方 MIME 類型,否則添加到非標(biāo)準(zhǔn)類型。

mimetypes.inited?

指明全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否已被初始化的旗標(biāo)。 這會(huì)由 init() 設(shè)為 True。

mimetypes.knownfiles?

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

mimetypes.suffix_map?

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

mimetypes.encodings_map?

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

mimetypes.types_map?

映射文件擴(kuò)展名到 MIME 類型的字典。

mimetypes.common_types?

映射文件擴(kuò)展名到非標(biāo)準(zhǔn)但常見的 MIME 類型的字典。

此模塊一個(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 類可以被用于那些需要多個(gè) MIME 類型數(shù)據(jù)庫的應(yīng)用程序;它提供了與 mimetypes 模塊所提供的類似接口。

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

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

可選的 filenames 形參可被用來讓附加文件被載入到默認(rèn)數(shù)據(jù)庫“之上”。

suffix_map?

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

encodings_map?

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

types_map?

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

types_map_inv?

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

guess_extension(type, strict=True)?

類似于 guess_extension() 函數(shù),使用存儲(chǔ)的表作為對象的一部分。

guess_type(url, strict=True)?

類似于 guess_type() 函數(shù),使用存儲(chǔ)的表作為對象的一部分。

guess_all_extensions(type, strict=True)?

類似于 guess_all_extensions() 函數(shù),使用存儲(chǔ)的表作為對象的一部分。

read(filename, strict=True)?

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

如果 strictTrue,信息將被添加到標(biāo)準(zhǔn)類型列表,否則添加到非標(biāo)準(zhǔn)類型列表。

readfp(fp, strict=True)?

從打開的文件 fp 載入 MIME 類型信息。 文件必須具有標(biāo)準(zhǔn) mime.types 文件的格式。

如果 strictTrue,信息將被添加到標(biāo)準(zhǔn)類型列表,否則添加到非標(biāo)準(zhǔn)類型列表。

read_windows_registry(strict=True)?

從 Windows 注冊表載入 MIME 類型信息。

可用性: Windows。

如果 strictTrue,信息將被添加到標(biāo)準(zhǔn)類型列表,否則添加到非標(biāo)準(zhǔn)類型列表。

3.2 新版功能.