12.10.1 MultiFile Objects
A MultiFile instance has the following methods:
Read a line. If the line is data (not a section-divider or end-marker
or real EOF) return it. If the line matches the most-recently-stacked
'' and set
self.last to 1 or 0 according as
the match is or is not an end-marker. If the line matches any other
stacked boundary, raise an error. On encountering end-of-file on the
underlying stream object, the method raises Error unless
all boundaries have been popped.
Return all lines remaining in this part as a list of strings.
Read all lines, up to the next section. Return them as a single
(multiline) string. Note that this doesn't take a size argument!
Seek. Seek indices are relative to the start of the current section.
The pos and whence arguments are interpreted as for a file
Return the file position relative to the start of the current section.
Skip lines to the next section (that is, read lines until a
section-divider or end-marker has been consumed). Return true if
there is such a section, false if an end-marker is seen. Re-enable
the most-recently-pushed boundary.
Return true if str is data and false if it might be a section
boundary. As written, it tests for a prefix other than
start of line (which all MIME boundaries have) but it is declared so
it can be overridden in derived classes.
Note that this test is used intended as a fast guard for the real
boundary tests; if it always returns false it will merely slow
processing, not cause it to fail.
Push a boundary string. When an appropriately decorated version of
this boundary is found as an input line, it will be interpreted as a
section-divider or end-marker. All subsequent
reads will return the empty string to indicate end-of-file, until a
call to pop() removes the boundary a or next() call
It is possible to push more than one boundary. Encountering the
most-recently-pushed boundary will return EOF; encountering any other
boundary will raise an error.
Pop a section boundary. This boundary will no longer be interpreted
Turn a boundary into a section-divider line. By default, this
-' (which MIME section boundaries have) but
it is declared so it can be overridden in derived classes. This
method need not append LF or CR-LF, as comparison with the result
ignores trailing whitespace.
Turn a boundary string into an end-marker line. By default, this
-' and appends
-' (like a
MIME-multipart end-of-message marker) but it is declared so it can be
overridden in derived classes. This method need not append LF or
CR-LF, as comparison with the result ignores trailing whitespace.
Finally, MultiFile instances have two public instance variables:
Nesting depth of the current part.
True if the last end-of-file was for an end-of-message marker.
See About this document... for information on suggesting changes.