Mercurial > cpython-lru_cache-weakref
annotate Lib/mailbox.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 5454fe4925d3 |
| children | 24da035ceb6e |
| rev | line source |
|---|---|
|
4573
73758db2f464
/usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents:
4316
diff
changeset
|
1 #! /usr/bin/env python |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
2 |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
3 """Classes to handle Unix style, MMDF style, and MH style mailboxes.""" |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
4 |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
5 |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 import rfc822 |
| 3230 | 7 import os |
| 8 import regex | |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 class _Mailbox: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 def __init__(self, fp): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 self.fp = fp |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 self.seekp = 0 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
3360
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
15 def seek(self, pos, whence=0): |
|
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
16 if whence==1: # Relative to current position |
|
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
17 self.pos = self.pos + pos |
|
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
18 if whence==2: # Relative to file's end |
|
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
19 self.pos = self.stop + pos |
|
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
20 else: # Default - absolute position |
|
e0ef009b2702
support 'whence' arg to seek()
Guido van Rossum <guido@python.org>
parents:
3230
diff
changeset
|
21 self.pos = self.start + pos |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 def next(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 while 1: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 self.fp.seek(self.seekp) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 try: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 self._search_start() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 except EOFError: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 self.seekp = self.fp.tell() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 return None |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 start = self.fp.tell() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 self._search_end() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 self.seekp = stop = self.fp.tell() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 if start <> stop: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 break |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 return rfc822.Message(_Subfile(self.fp, start, stop)) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 class _Subfile: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 def __init__(self, fp, start, stop): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 self.fp = fp |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 self.start = start |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 self.stop = stop |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 self.pos = self.start |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 |
|
1618
7f891f32864c
Changes to use default argument values where possible
Guido van Rossum <guido@python.org>
parents:
1596
diff
changeset
|
45 def read(self, length = None): |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 if self.pos >= self.stop: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 return '' |
|
1618
7f891f32864c
Changes to use default argument values where possible
Guido van Rossum <guido@python.org>
parents:
1596
diff
changeset
|
48 if length is None: |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 length = self.stop - self.pos |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 self.fp.seek(self.pos) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 self.pos = self.pos + length |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 return self.fp.read(length) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 |
|
1618
7f891f32864c
Changes to use default argument values where possible
Guido van Rossum <guido@python.org>
parents:
1596
diff
changeset
|
54 def readline(self, length = None): |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 if self.pos >= self.stop: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 return '' |
|
1618
7f891f32864c
Changes to use default argument values where possible
Guido van Rossum <guido@python.org>
parents:
1596
diff
changeset
|
57 if length is None: |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 length = self.stop - self.pos |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 self.fp.seek(self.pos) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 data = self.fp.readline(length) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 if len(data) < length: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 length = len(data) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 self.pos = self.pos + length |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 return data |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 def tell(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 return self.pos - self.start |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 |
| 3230 | 69 def seek(self, pos, whence=0): |
| 70 if whence == 0: | |
| 71 self.pos = self.start + pos | |
| 72 elif whence == 1: | |
| 73 self.pos = self.pos + pos | |
| 74 elif whence == 2: | |
| 75 self.pos = self.stop + pos | |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 def close(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 pass |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 class UnixMailbox(_Mailbox): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 def _search_start(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 while 1: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 line = self.fp.readline() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 if not line: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 raise EOFError |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 if line[:5] == 'From ': |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 return |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 def _search_end(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 while 1: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 pos = self.fp.tell() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 line = self.fp.readline() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 if not line: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 return |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 if line[:5] == 'From ': |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 self.fp.seek(pos) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 return |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
98 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 class MmdfMailbox(_Mailbox): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 def _search_start(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 while 1: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
102 line = self.fp.readline() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 if not line: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
104 raise EOFError |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
105 if line[:5] == '\001\001\001\001\n': |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
106 return |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 def _search_end(self): |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
109 while 1: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 pos = self.fp.tell() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
111 line = self.fp.readline() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 if not line: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 return |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 if line == '\001\001\001\001\n': |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 self.fp.seek(pos) |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
116 return |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 |
| 3230 | 118 class MHMailbox: |
| 119 def __init__(self, dirname): | |
| 120 pat = regex.compile('^[0-9][0-9]*$') | |
| 121 self.dirname = dirname | |
| 122 files = os.listdir(self.dirname) | |
| 123 self.boxes = [] | |
| 124 for f in files: | |
| 125 if pat.match(f) == len(f): | |
| 126 self.boxes.append(f) | |
| 127 | |
| 128 def next(self): | |
| 129 if not self.boxes: | |
| 130 return None | |
| 131 fn = self.boxes[0] | |
| 132 del self.boxes[0] | |
| 133 fp = open(os.path.join(self.dirname, fn)) | |
| 134 return rfc822.Message(fp) | |
| 135 | |
| 136 | |
|
5531
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
137 class BabylMailbox(_Mailbox): |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
138 def _search_start(self): |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
139 while 1: |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
140 line = self.fp.readline() |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
141 if not line: |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
142 raise EOFError |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
143 if line == '*** EOOH ***\n': |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
144 return |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
145 |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
146 def _search_end(self): |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
147 while 1: |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
148 pos = self.fp.tell() |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
149 line = self.fp.readline() |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
150 if not line: |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
151 return |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
152 if line == '\037\014\n': |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
153 self.fp.seek(pos) |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
154 return |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
155 |
|
5454fe4925d3
Added BabylMailbox class by Fred Lundh (untested).
Guido van Rossum <guido@python.org>
parents:
5443
diff
changeset
|
156 |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
157 def _test(): |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
158 import time |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 import sys |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
160 import string |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
161 import os |
| 3230 | 162 |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
163 args = sys.argv[1:] |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
164 if not args: |
|
5443
8868e9f13657
Improve getting the mailbox from the environment.
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
165 for key in 'MAIL', 'LOGNAME', 'USER': |
|
8868e9f13657
Improve getting the mailbox from the environment.
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
166 if os.environ.has_key(key): |
|
8868e9f13657
Improve getting the mailbox from the environment.
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
167 mbox = os.environ[key] |
|
8868e9f13657
Improve getting the mailbox from the environment.
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
168 break |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
169 else: |
|
5443
8868e9f13657
Improve getting the mailbox from the environment.
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
170 print "$MAIL, $LOGNAME nor $USER set -- who are you?" |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
171 return |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
172 else: |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
173 mbox = args[0] |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
174 if mbox[:1] == '+': |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
175 mbox = os.environ['HOME'] + '/Mail/' + mbox[1:] |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
176 elif not '/' in mbox: |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
177 mbox = '/usr/mail/' + mbox |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
178 if os.path.isdir(mbox): |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
179 mb = MHMailbox(mbox) |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
180 else: |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
181 fp = open(mbox, 'r') |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
182 mb = UnixMailbox(fp) |
| 3230 | 183 |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
184 msgs = [] |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
185 while 1: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
186 msg = mb.next() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
187 if not msg: |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
188 break |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 msgs.append(msg) |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
190 if len(args) > 1: |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
191 num = string.atoi(args[1]) |
|
1596
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
192 print 'Message %d body:'%num |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 msg = msgs[num-1] |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
194 msg.rewindbody() |
|
2197dd241d8d
Jack's module for parsing UNIX mailbox files
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
195 sys.stdout.write(msg.fp.read()) |
|
4316
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
196 else: |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
197 print 'Mailbox',mbox,'has',len(msgs),'messages:' |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
198 for msg in msgs: |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
199 f = msg.getheader('from') |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
200 s = msg.getheader('subject') |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
201 d = (msg.getheader('date')) |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
202 print '%20.20s %18.18s %-30.30s'%(f, d[5:], s) |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
203 |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
204 |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
205 if __name__ == '__main__': |
|
772828c1b1f6
Revamped test case and updated doc string.
Guido van Rossum <guido@python.org>
parents:
3360
diff
changeset
|
206 _test() |
