7.6 mimetypes -- ファイル名を MIME 型へマップする

mimetypes モジュールは、ファイル名あるいは URL と、ファイル名拡張子に 関連付けられた MIME 型とを変換します。ファイル名から MIME 型へと、 MIME 型からファイル名拡張子への変換が提供されます; 後者の変換では符号化方式はサポートされていません。

このモジュールは、一つのクラスと多くの便利な関数を提供します。 これらの関数がこのモジュールへの標準のインターフェースですが、 アプリケーションによっては、そのクラスにも関係するかもしれません。

以下で説明されている関数は、このモジュールへの主要なインターフェースを 提供します。たとえモジュールが初期化されていなくても、もしこれらの関数が、 init() がセットアップする情報に依存していれば、これらの関数は、 init() を呼びます。

guess_type( filename[, strict])
filename で与えられるファイル名あるいは URL に基づいて、 ファイルの型を推定します。戻り値は、タプル (type, encoding) です、ここで typeは、 もし型が(拡張子がないあるいは未定義のため)推定できない場合は、 None を、あるいは、 MIME content-type: ヘッダ に利用できる、'type/subtype'の形の文字列です。

encoding は、符合化方式がない場合は None を、あるいは、 符号化に使われるプログラムの名前 (たとえば、compress あるいは gzip)です。 符号化方式は Content-Encoding:ヘッダとして 使うのに適しており、 Content-Transfer-Encoding: ヘッダには適していません。 マッピングはテーブルドリブンです。符号化方式のサフィックスは大/小文字を区別します; データ型サフィックスは、最初大/小文字を区別して試し、 それから大/小文字を区別せずに試します。

省略可能な strictは、既知の MIME 型のリストとして認識されるものが、 IANAとして登録された 正式な型のみに限定されるかどうかを指定するフラグです。 strict が true (デフォール)の時は、IANA 型のみがサポートされます; strict が false のときは、いくつかの追加の、非標準ではあるが、一般的に 使用される MIME 型も認識されます。

guess_all_extensions( type[, strict])
type で与えられる MIME 型に基づいてファイルの拡張子を推定します。 戻り値は、先頭のドット (".")を含む、可能なファイル拡張子すべてを 与える文字列のリストです。拡張子と特別なデータストリームとの関連付けは 保証されませんが、 guess_type()によって MIME型 type とマップされます。

省略可能な strictguess_type() 関数のものと同じ意味を持ちます。

guess_extension( type[, strict])
type で与えられる MIME 型に基づいてファイルの拡張子を推定します。 戻り値は、先頭のドット (".")を含む、ファイル拡張子を 与える文字列のリストです。拡張子と特別なデータストリームとの関連付けは 保証されませんが、 guess_type()によって MIME型 type とマップされます。 もし typeに対して拡張子が推定できない場合は、 Noneが返されます。

省略可能な strictguess_type() 関数のものと同じ意味を持ちます。

モジュールの動作を制御するために、いくつかの追加の関数とデータ項目が 利用できます。

init( [files])
内部のデータ構造を初期化します。 もし files が与えられていれば、これはデフォールトの型のマップを 増やすために使われる、一連のファイル名でなければなりません。 もし省略されていれば、使われるファイル名は knownfilesから 取られます。file あるいは knownfiles 内の各ファイル名は、 それ以前に現れる名前より優先されます。 繰り返し init() を呼び出すことは許されています。

read_mime_types( filename)
ファル filename で与えられた型のマップが、もしあればロードします。 型のマップは、先頭の dot (".") を含むファイル名拡張子を、 'type/subtype'の形の文字列にマッピングする辞書として返されます。 もしファイル filename が存在しないか、読み込めなければ、 None が返されます。

add_type( type, ext[, strict])
mime型 type からのマッピングを拡張子 ext に追加します。 拡張子がすでに既知であれば、新しい型が古いものに置き替わります。 その型がすでに既知であれば、その拡張子が、既知の拡張子のリストに追加されます。

strictがある時は、そのマッピングは正式なMIME型に、 そうでなければ、非標準のMIME型に追加されます。

inited
グローバルなデータ構造が初期化されているかどうかを示すフラグ。 これは init() により true に設定されます。

knownfiles
共通にインストールされた型マップファイル名のリスト。これらの ファイルは、普通 mime.typesという名前であり、パッケージごとに 異なる場所にインストールされます。

suffix_map
サフィックスをサフィックスにマップする辞書。これは、符号化方式と 型が同一拡張子で示される符号化ファイルが認識できるように 使用されます。例えば、.tgz 拡張子は、符号化と型が別個に 認識できるように .tar.gzにマップされます。

encodings_map
ファイル名拡張子を符号化方式型にマッピングする辞書

types_map
ファイル名拡張子をMIME型にマップする辞書

common_types
ファイル名拡張子を非標準ではあるが、一般に使われているMIME型に マップする辞書

MimeTypes クラスは、1つ以上のMIME-型 データベースを 必要とするアプリケーションに役に立つでしょう。

クラス MimeTypes( [filenames])
このクラスは、MIME-型データベースを表現します。デフォールトでは、 このモジュールの他のものと同じデータベースへのアクセスを提供します。 初期データベースは、このモジュールによって提供されるもののコピーで、 追加の mime.types-形式のファイルを、read() あるいは readfp() メソッドを使って、データベースにロードすることで拡張されます。 マッピング辞書も、もしデフォールトのデータが望むものでなければ、 追加のデータをロードする前にクリアされます。

省略可能な filenamesパラメータは、追加のファイルを、デフォールト データベースの"トップに"ロードさせるのに使うことができます。

バージョン 2.2 で 新たに追加 された仕様です。

モジュールの使用例:

>>> 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'



Subsections
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。