mimetypes
--- 映射文件名到 MIME 類(lèi)型?
源代碼: Lib/mimetypes.py
mimetypes
模塊可以在文件名或 URL 和關(guān)聯(lián)到文件擴(kuò)展名的 MIME 類(lèi)型之間執(zhí)行轉(zhuǎn)換。 所提供的轉(zhuǎn)換包括從文件名到 MIME 類(lèi)型和從 MIME 類(lèi)型到文件擴(kuò)展名;后一種轉(zhuǎn)換不支持編碼格式。
該模塊提供了一個(gè)類(lèi)和一些便捷函數(shù)。 這些函數(shù)是該模塊通常的接口,但某些應(yīng)用程序可能也會(huì)希望使用類(lèi)。
下列函數(shù)提供了此模塊的主要接口。 如果此模塊尚未被初始化,它們將會(huì)調(diào)用 init()
,如果它們依賴于 init()
所設(shè)置的信息的話。
- mimetypes.guess_type(url, strict=True)?
根據(jù) url 給出的文件名、路徑或 URL 來(lái)猜測(cè)文件的類(lèi)型,URL 可以為字符串或 path-like object。
返回值是一個(gè)元組
(type, encoding)
其中 type 在無(wú)法猜測(cè)(后綴不存在或者未知)時(shí)為None
,或者為'type/subtype'
形式的字符串,可以作為 MIME content-type 標(biāo)頭。encoding 在無(wú)編碼格式時(shí)為
None
,或者為程序所用的編碼格式 (例如 compress 或 gzip)。 它可以作為 Content-Encoding 標(biāo)頭,但 不可 作為 Content-Transfer-Encoding 標(biāo)頭。 映射是表格驅(qū)動(dòng)的。 編碼格式前綴對(duì)大小寫(xiě)敏感;類(lèi)型前綴會(huì)先以大小寫(xiě)敏感方式檢測(cè)再以大小寫(xiě)不敏感方式檢測(cè)。可選的 strict 參數(shù)是一個(gè)旗標(biāo),指明要將已知 MIME 類(lèi)型限制在 IANA 已注冊(cè) 的官方類(lèi)型之內(nèi)。 當(dāng) strict 為
True
時(shí)(默認(rèn)值),則僅支持 IANA 類(lèi)型;當(dāng) strict 為False
時(shí),則還支持某些附加的非標(biāo)準(zhǔn)但常用的 MIME 類(lèi)型。在 3.8 版更改: 增加了 path-like object 作為 url 的支持。
- mimetypes.guess_all_extensions(type, strict=True)?
根據(jù)由 type 給出的文件 MIME 類(lèi)型猜測(cè)其擴(kuò)展名。 返回值是由所有可能的文件擴(kuò)展名組成的字符串列表,包括開(kāi)頭的點(diǎn)號(hào) (
'.'
)。 這些擴(kuò)展名不保證能關(guān)聯(lián)到任何特定的數(shù)據(jù)流,但是將會(huì)由guess_type()
映射到 MIME 類(lèi)型 type。可選的 strict 參數(shù)具有與
guess_type()
函數(shù)一致的含義。
- mimetypes.guess_extension(type, strict=True)?
根據(jù)由 type 給出的文件 MIME 類(lèi)型猜測(cè)其擴(kuò)展名。 返回值是一個(gè)表示文件擴(kuò)展名的字符串,包括開(kāi)頭的點(diǎn)號(hào) (
'.'
)。 該擴(kuò)展名不保證能關(guān)聯(lián)到任何特定的數(shù)據(jù)流,但是將會(huì)由guess_type()
映射到 MIME 類(lèi)型 type。 如果不能猜測(cè)出 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)的類(lèi)型映射。 如果省略則要使用的文件名會(huì)從
knownfiles
中獲取; 在 Windows 上,將會(huì)載入當(dāng)前注冊(cè)表設(shè)置。 在 files 或knownfiles
中指定的每個(gè)文件名的優(yōu)先級(jí)將高于在它之前的文件名。init()
允許被重復(fù)調(diào)用。為 files 指定一個(gè)空列表將防止應(yīng)用系統(tǒng)默認(rèn)選項(xiàng):將只保留來(lái)自內(nèi)置列表的常用值。
如果 files 為
None
則內(nèi)部數(shù)據(jù)結(jié)構(gòu)會(huì)完全重建為其初始默認(rèn)值。 這是一個(gè)穩(wěn)定操作并將在多次調(diào)用時(shí)產(chǎn)生相同的結(jié)果。在 3.2 版更改: 在之前版本中,Windows 注冊(cè)表設(shè)置會(huì)被忽略。
- mimetypes.read_mime_types(filename)?
載入在文件 filename 中給定的類(lèi)型映射,如果文件存在的話。 返回的類(lèi)型映射會(huì)是一個(gè)字典,其中的鍵值對(duì)為文件擴(kuò)展名包括開(kāi)頭的點(diǎn)號(hào) (
'.'
) 與'type/subtype'
形式的字符串。 如果文件 filename 不存在或無(wú)法被讀取,則返回None
。
- mimetypes.add_type(type, ext, strict=True)?
添加一個(gè)從 MIME 類(lèi)型 type 到擴(kuò)展名 ext 的映射。 當(dāng)擴(kuò)展名已知時(shí),新類(lèi)型將替代舊類(lèi)型。 當(dāng)類(lèi)型已知時(shí),擴(kuò)展名將被添加到已知擴(kuò)展名列表。
當(dāng) strict 為
True
時(shí)(默認(rèn)值),映射將被添加到官方 MIME 類(lèi)型,否則添加到非標(biāo)準(zhǔn)類(lèi)型。
- mimetypes.knownfiles?
通常安裝的類(lèi)型映射文件名列表。 這些文件一般被命名為
mime.types
并會(huì)由不同的包安裝在不同的位置。
- mimetypes.suffix_map?
將后綴映射到其他后綴的字典。 它被用來(lái)允許識(shí)別已編碼的文件,其編碼格式和類(lèi)型是由相同的擴(kuò)展名來(lái)指明的。 例如,
.tgz
擴(kuò)展名被映射到.tar.gz
以允許編碼格式和類(lèi)型被分別識(shí)別。
- mimetypes.encodings_map?
映射文件擴(kuò)展名到編碼格式類(lèi)型的字典。
- mimetypes.types_map?
映射文件擴(kuò)展名到 MIME 類(lèi)型的字典。
- mimetypes.common_types?
映射文件擴(kuò)展名到非標(biāo)準(zhǔn)但常見(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 對(duì)象?
MimeTypes
類(lèi)可以被用于那些需要多個(gè) MIME 類(lèi)型數(shù)據(jù)庫(kù)的應(yīng)用程序;它提供了與 mimetypes
模塊所提供的類(lèi)似接口。
- class mimetypes.MimeTypes(filenames=(), strict=True)?
這個(gè)類(lèi)表示 MIME 類(lèi)型數(shù)據(jù)庫(kù)。 默認(rèn)情況下,它提供了對(duì)與此模塊其余部分一致的數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。 這個(gè)初始數(shù)據(jù)庫(kù)是此模塊所提供數(shù)據(jù)庫(kù)的一個(gè)副本,并可以通過(guò)使用
read()
或readfp()
方法將附加的mime.types
樣式文載入到數(shù)據(jù)庫(kù)中來(lái)進(jìn)行擴(kuò)展。 如果不需要默認(rèn)數(shù)據(jù)的話這個(gè)映射字典也可以在載入附加數(shù)據(jù)之前先被清空。可選的 filenames 形參可被用來(lái)讓附加文件被載入到默認(rèn)數(shù)據(jù)庫(kù)“之上”。
- suffix_map?
將后綴映射到其他后綴的字典。 它被用來(lái)允許識(shí)別已編碼的文件,其編碼格式和類(lèi)型是由相同的擴(kuò)展名來(lái)指明的。 例如,
.tgz
擴(kuò)展名被映射到.tar.gz
以允許編碼格式和類(lèi)型被分別識(shí)別。 這是在模塊中定義的全局suffix_map
的一個(gè)副本。
- encodings_map?
映射文件擴(kuò)展名到編碼格式類(lèi)型的字典。 這是在模塊中定義的全局
encodings_map
的一個(gè)副本。
- types_map?
包含兩個(gè)字典的元組,將文件擴(kuò)展名映射到 MIME 類(lèi)型:第一個(gè)字典針對(duì)非標(biāo)準(zhǔn)類(lèi)型而第二個(gè)字典針對(duì)標(biāo)準(zhǔn)類(lèi)型。 它們會(huì)由
common_types
和types_map
來(lái)初始化。
- types_map_inv?
包含兩個(gè)字典的元組,將 MIME 類(lèi)型映射到文件擴(kuò)展名列表:第一個(gè)字典針對(duì)非標(biāo)準(zhǔn)類(lèi)型而第二個(gè)字典針對(duì)標(biāo)準(zhǔn)類(lèi)型。 它們會(huì)由
common_types
和types_map
來(lái)初始化。
- guess_extension(type, strict=True)?
類(lèi)似于
guess_extension()
函數(shù),使用存儲(chǔ)的表作為對(duì)象的一部分。
- guess_type(url, strict=True)?
類(lèi)似于
guess_type()
函數(shù),使用存儲(chǔ)的表作為對(duì)象的一部分。
- guess_all_extensions(type, strict=True)?
類(lèi)似于
guess_all_extensions()
函數(shù),使用存儲(chǔ)的表作為對(duì)象的一部分。
- read(filename, strict=True)?
從名稱為 filename 的文件載入 MIME 信息。 此方法使用
readfp()
來(lái)解析文件。如果 strict 為
True
,信息將被添加到標(biāo)準(zhǔn)類(lèi)型列表,否則添加到非標(biāo)準(zhǔn)類(lèi)型列表。
- readfp(fp, strict=True)?
從打開(kāi)的文件 fp 載入 MIME 類(lèi)型信息。 文件必須具有標(biāo)準(zhǔn)
mime.types
文件的格式。如果 strict 為
True
,信息將被添加到標(biāo)準(zhǔn)類(lèi)型列表,否則添加到非標(biāo)準(zhǔn)類(lèi)型列表。