Python newbie here。私は電子メールメッセージを解析して、大きなmboxファイルを歩きたい。私はそれを行うことができます:Pythonでmboxファイルを解析する
import sys
import mailbox
def gen_summary(filename):
mbox = mailbox.mbox(filename)
for message in mbox:
subj = message['subject']
print subj
if __name__ == "__main__":
if len(sys.argv) != 2:
print 'Usage: python genarchivesum.py mbox'
sys.exit(1)
gen_summary(sys.argv[1])
しかし、私はより多くの制御が必要です。私は、mboxファイル内の特定の電子メールの開始のバイト位置を得ることができる必要があり、また、(ディスク上に表されるように)メッセージのバイト数を取得する必要があります。そして、将来、mboxファイルの最初から反復するのではなく、特定のメッセージを探し、それを解析する必要があります(したがって、ディスク上のバイト位置を取得する必要があります)。これらは大きなmboxファイルであり、効率が懸念されます。
すべての目的は、mboxの各電子メールに関する小さなビットを含む要約ファイルを生成できるようにすることです。その後、mbox内の個々の電子メールを効率的に検索します。
私は決して 'mailbox'を使ったことはありませんが、' help(mailbox.mbox) 'を読みました。 '.iterkeys()'メソッドを使ってキー値のイテレータを取得し、キー値を使ってメッセージを見つけることはできませんか?なぜあなたは、モジュールを使用する代わりにメッセージを見つけるためのキーとしてバイトインデックスを使用したいのですか?モジュールを使ってキーでメッセージをインデックス化しようとしましたか?もしあなたがそれを試して、それが遅すぎるか、何かであるなら、そう言いなさい。 – steveha
私は1万の電子メールのmboxを持っていると言います。最後の電子メールがほしいと思ったときに、9,998以上の/ parse/iterateを読み込む必要はありません。私はmboxファイルのその時点まで探して、そのメッセージを読むだけです。 –
@MarkFletcherあなたはこれを稼働させましたか?もしそうなら、私に知らせてください。 – kingmakerking