バリケンのPython日記 RSSフィード

2010-01-28

[] mbox2eml.py  mbox2eml.py - バリケンのPython日記 を含むブックマーク はてなブックマーク -  mbox2eml.py - バリケンのPython日記  mbox2eml.py - バリケンのPython日記 のブックマークコメント

ずいぶん前にRubyで作った「mbox2eml.rb」をPythonで書き直してみたよ。

このスクリプトは、mbox形式のメールファイルをemlファイルに切り出すよ。

ちなみに、mbox形式はThunderbirdとかで使われているよ。emlファイルはWindowsOutlook Expressとかで利用できるよ。

以前Rubyで書いたときは「From_エスケープ」を実装していなかったけど、今回はちゃんと実装したよ。

import sys
import re

from_line = re.compile('From\s')
blank_line = re.compile('$')
escaped_from_line = re.compile('^>(>*From )')

count = 0
blank_line_flag = True
output_file = None

for line in sys.stdin:
  if blank_line_flag and from_line.match(line):
    if output_file: output_file.close()
    count += 1
    output_file = open(str(count).zfill(4) + '.eml', 'w')
    continue
  output_file.write(escaped_from_line.sub(r'\1', line, 1))
  blank_line_flag = blank_line.match(line)

output_file.close()

これをテキストエディタで「mbox2eml.py」という名前で保存してね。

使い方

コマンドプロンプトで、

$ python mbox2eml.py < [mbox形式のメールファイル]

とすることで、「0001.eml」「0002.eml」‥‥というファイルに切り出していくよ。

トラックバック - http://python.g.hatena.ne.jp/muscovyduck/20100128