目次

前のトピックへ

19.6. mimetools — MIME メッセージを解析するためのツール

次のトピックへ

19.8. MimeWriter — 汎用 MIME ファイルライター

このページ

19.7. mimetypes — ファイル名を MIME 型へマップする

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

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

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

mimetypes.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 型も認識されます。

mimetypes.guess_all_extensions(type[, strict])

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

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

mimetypes.guess_extension(type[, strict])

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

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

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

mimetypes.init([files])

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

mimetypes.read_mime_types(filename)

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

mimetypes.add_type(type, ext[, strict])

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

strict が True の時(デフォルト)は、そのマッピングは正式なMIME型に、 そうでなければ、非標準のMIME型に追加されます。

mimetypes.inited

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

mimetypes.knownfiles

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

mimetypes.suffix_map

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

mimetypes.encodings_map

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

mimetypes.types_map

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

mimetypes.common_types

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

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

class mimetypes.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'

19.7.1. Mime型オブジェクト

MimeTypes インスタンスは、 mimetypes モジュールのそれと非常によく似たインターフェースを提供します。

MimeTypes.suffix_map

サフィックスをサフィックスにマップする辞書。これは、符号化方式と型が同一拡張子で示されるような符号化ファイルが認識できるように 使用されます。例えば、 .tgz 拡張子は、符号化方式と型が別個に認識できるように .tar.gz に対応づけられます。 これは、最初はモジュールで定義されたグローバルな suffix_map のコピーです。

MimeTypes.encodings_map

ファイル名拡張子を符号化型にマッピングする辞書。これは、最初はモジュールで定義されたグローバルな encodings_map のコピーです。

MimeTypes.types_map

ファイル名拡張子をMIME型にマッピングするる辞書。これは、最初はモジュールで定義されたグローバルな types_map のコピーです。

MimeTypes.common_types

ファイル名拡張子を非標準ではあるが、一般に使われているMIME型にマップする辞書。これは、最初はモジュールで定義されたグローバルな common_types のコピーです。

MimeTypes.guess_extension(type[, strict])

guess_extension() 関数と同様に、オブジェクトの一部として保存されたテーブルを使用します。

MimeTypes.guess_type(url[, strict])

guess_type() 関数と同様に、オブジェクトの一部として保存されたテーブルを使用します。

MimeTypes.read(path)

MIME情報を、 path という名のファイルからロードします。これはファイルを解析するのに readfp() を使用します。

MimeTypes.readfp(file)

MIME型情報を、オープンしたファイルからロードします。ファイルは、標準の mime.types ファイルの形式でなければなりません。