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
,或者為程序所用的編碼格式 (例如 compress 或 gzip)。 它可以作為 Content-Encoding 標頭,但 不可 作為 Content-Transfer-Encoding 標頭。 映射是表格驅動(dòng)的。 編碼格式前綴對大小寫(xiě)敏感;類(lèi)型前綴會(huì )先以大小寫(xiě)敏感方式檢測再以大小寫(xiě)不敏感方式檢測。可選的 strict 參數是一個(gè)旗標,指明要將已知 MIME 類(lèi)型限制在 IANA 已注冊 的官方類(lèi)型之內。 當 strict 為
True
時(shí)(默認值),則僅支持 IANA 類(lèi)型;當 strict 為False
時(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ì )載入當前注冊表設置。 在 files 或knownfiles
中指定的每個(gè)文件名的優(yōu)先級將高于在它之前的文件名。init()
允許被重復調用。為 files 指定一個(gè)空列表將防止應用系統默認選項:將只保留來(lái)自?xún)戎昧斜淼某S弥怠?/p>
如果 files 為
None
則內部數據結構會(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í),擴展名將被添加到已知擴展名列表。
當 strict 為
True
時(shí)(默認值),映射將被添加到官方 MIME 類(lèi)型,否則添加到非標準類(lèi)型。
- 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_types
和types_map
來(lái)初始化。
- types_map_inv?
包含兩個(gè)字典的元組,將 MIME 類(lèi)型映射到文件擴展名列表:第一個(gè)字典針對非標準類(lèi)型而第二個(gè)字典針對標準類(lèi)型。 它們會(huì )由
common_types
和types_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)解析文件。如果 strict 為
True
,信息將被添加到標準類(lèi)型列表,否則添加到非標準類(lèi)型列表。
- readfp(fp, strict=True)?
從打開(kāi)的文件 fp 載入 MIME 類(lèi)型信息。 文件必須具有標準
mime.types
文件的格式。如果 strict 為
True
,信息將被添加到標準類(lèi)型列表,否則添加到非標準類(lèi)型列表。