Author: pquerna
Date: Sun Aug 23 23:31:32 2009
New Revision: 807032
URL: http://svn.apache.org/viewvc?rev=807032&view=rev
Log:
Add basic mbox file parser, based on he native Python MIME parsing classes,
with a few additions to parse mbox files, or byte ranges of an mbox file.
Added:
labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py (with props)
Added: labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py
URL:
http://svn.apache.org/viewvc/labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py?rev=807032&view=auto
==============================================================================
--- labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py (added)
+++ labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py Sun Aug 23 23:31:32 2009
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#
+#
+#
+#
+
+import email
+from email.parser import Parser as _Parser
+from email.parser import FeedParser as _FeedParser
+
+class Message(email.message.Message):
+ offset = 0
+ length = 0
+ pass
+
+
+class Parser:
+ def __init__(self, path):
+ self.path = path
+ self.fp = None
+ self.parser = None
+
+ def _openfp(self):
+ if self.fp is None:
+ self.fp = open(self.path, 'rb')
+
+ def message_at_offset(self, offset, length):
+ self._openfp()
+ self.fp.seek(offset)
+ data = self.fp.read(length)
+ p = _Parser(Message)
+ m = p.parsestr(data)
+ m.length = length
+ m.offset = offset
+ return m
+
+ def reset(self):
+ self._openfp()
+ self.fp.seek(0)
+
+ def next(self):
+ self._openfp()
+ p = _FeedParser(Message)
+ offset = self.fp.tell()
+ last_blank = False
+ while True:
+ line = self.fp.readline()
+ if line is None or line == "":
+ break
+ if last_blank and line[0:5] == "From ":
+ break
+ last_blank = False
+ if line == "\n" or line == "\r\n":
+ last_blank = True
+ p.feed(line)
+ m = p.close()
+ m.offset = offset
+ m.length = self.fp.tell() - m.offset
+ if m.length == 0:
+ return None
+ return m
Propchange: labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: labs/mboxed/trunk/mboxed/mboxed/lib/mbox.py
------------------------------------------------------------------------------
svn:mime-type = text/plain
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]