19.1.13. email.iterators
: イテレータ¶
ソースコード: Lib/email/iterators.py
Message.walk
メソッドを使うと、簡単にメッセージオブジェクトツリー内を次から次へとたどる (iteration) ことができます。 email.iterators
モジュールはこのための高水準イテレータをいくつか提供します。
-
email.iterators.
body_line_iterator
(msg, decode=False)¶ このイテレータは msg 中のすべてのサブパートに含まれるペイロードをすべて順にたどっていき、ペイロード内の文字列を 1 行ずつ返します。サブパートのヘッダはすべて無視され、Python 文字列でないペイロードからなるサブパートも無視されます。これは
readline()
を使って、ファイルからメッセージを (ヘッダだけとばして) フラットなテキストとして読むのにいくぶん似ているかもしれません。オプション引数 decode は、
Message.get_payload
にそのまま渡されます。
-
email.iterators.
typed_subpart_iterator
(msg, maintype='text', subtype=None)¶ このイテレータは msg 中のすべてのサブパートをたどり、それらの中で指定されたMIME 形式 maintype と subtype をもつようなパートのみを返します。
subtype は省略可能であることに注意してください。これが省略された場合、サブパートの MIME 形式は maintype のみがチェックされます。じつは maintype も省略可能で、その場合にはデフォルトは text です。
つまり、デフォルトでは
typed_subpart_iterator()
は MIME 形式 text/* をもつサブパートを順に返していくというわけです。
以下の関数は役に立つデバッグ用ツールとして追加されたもので、パッケージとして公式なサポートのあるインターフェイスでは ありません。
-
email.iterators.
_structure
(msg, fp=None, level=0, include_default=False)¶ そのメッセージオブジェクト構造の content-type をインデントつきで表示します。例えば:
>>> msg = email.message_from_file(somefile) >>> _structure(msg) multipart/mixed text/plain text/plain multipart/digest message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain message/rfc822 text/plain text/plain
オプション引数 fp は出力を渡すための file-like オブジェクトです。 これは Python の
print()
関数が対応できるようになっている必要があります。 level は内部的に使用されます。 include_default が真の場合、デフォルトの型も出力します。