<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 98.2 beta6 (August 14th, 1998)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>12.8 multifile --
Support for files containing distinct parts</TITLE>
<META NAME="description" CONTENT="12.8 multifile --
Support for files containing distinct parts">
<META NAME="keywords" CONTENT="lib">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<LINK REL="STYLESHEET" HREF="lib.css">
<LINK REL="next" HREF="module-binhex.html">
<LINK REL="previous" HREF="module-MimeWriter.html">
<LINK REL="up" HREF="netdata.html">
<LINK REL="next" HREF="MultiFile-objects.html">
</HEAD>
<BODY bgcolor="#ffffff">
<div class=navigation>
<table align=center width="100%" cellpadding=0 cellspacing=2>
<tr>
<td><A HREF="MultiFile-objects.html"><img width=32 height=32 align=bottom border=0 alt="next"
 src="../icons/next.gif"></A></td>
<td><A HREF="netdata.html"><img width=32 height=32 align=bottom border=0 alt="up"
 src="../icons/up.gif"></A></td>
<td><A HREF="MimeWriter-objects.html"><img width=32 height=32 align=bottom border=0 alt="previous"
 src="../icons/previous.gif"></A></td>
<td align=center bgcolor="#99CCFF" width="100%">
 <b class=title>Python Library Reference</b></td>
<td><A HREF="contents.html"><img width=32 height=32 align=bottom border=0 alt="contents"
 src="../icons/contents.gif"></A></td>
<td><a
 href="modindex.html"><img width=32 height=32 align=bottom border=0 alt="modules"
 src="../icons/modules.gif"></a></td>
<td><A HREF="genindex.html"><img width=32 height=32 align=bottom border=0 alt="index"
 src="../icons/index.gif"></A></td>
</tr></table><b class=navlabel>Next:</b> <span class=sectref><A HREF="MultiFile-objects.html">12.8.1 MultiFile Objects</A></span>
<b class=navlabel>Up:</b> <span class=sectref><A HREF="netdata.html">12. Internet Data Handling</A></span>
<b class=navlabel>Previous:</b> <span class=sectref><A HREF="MimeWriter-objects.html">12.7.1 MimeWriter Objects</A></span>
<br><hr></div>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION0014800000000000000000">
12.8 <tt class=module>multifile</tt> --
         Support for files containing distinct parts</A>
</H1>

<P>


<P>
The <tt class=class>MultiFile</tt> object enables you to treat sections of a text
file as file-like input objects, with <tt>''</tt> being returned by
<tt class=method>readline()</tt> when a given delimiter pattern is encountered.  The
defaults of this class are designed to make it useful for parsing
MIME multipart messages, but by subclassing it and overriding methods 
it can be easily adapted for more general use.

<P>
<dl><dt><b><a name="l2h-2018"><tt class=class>MultiFile</tt></a></b> (<var>fp</var><big>[</big><var>, seekable</var><big>]</big>)
<dd>
Create a multi-file.  You must instantiate this class with an input
object argument for the <tt class=class>MultiFile</tt> instance to get lines from,
such as as a file object returned by <tt class=function>open()</tt>.

<P>
<tt class=class>MultiFile</tt> only ever looks at the input object's
<tt class=method>readline()</tt>, <tt class=method>seek()</tt> and <tt class=method>tell()</tt> methods, and
the latter two are only needed if you want random access to the
individual MIME parts. To use <tt class=class>MultiFile</tt> on a non-seekable
stream object, set the optional <var>seekable</var> argument to false; this
will prevent using the input object's <tt class=method>seek()</tt> and
<tt class=method>tell()</tt> methods.
</dl>

<P>
It will be useful to know that in <tt class=class>MultiFile</tt>'s view of the world, text
is composed of three kinds of lines: data, section-dividers, and
end-markers.  MultiFile is designed to support parsing of
messages that may have multiple nested message parts, each with its
own pattern for section-divider and end-marker lines.

<P>

<p><hr>
<!--Table of Child-Links-->


<UL>
<LI><A NAME="tex2html3450"
 HREF="MultiFile-objects.html">12.8.1 MultiFile Objects </A>
<LI><A NAME="tex2html3451"
 HREF="multifile-example.html">12.8.2 <tt class=class>MultiFile</tt> Example </A>
</UL>
<!--End of Table of Child-Links-->
<p>
<div class=navigation><hr><table align=center width="100%" cellpadding=0 cellspacing=2>
<tr>
<td><A HREF="MultiFile-objects.html"><img width=32 height=32 align=bottom border=0 alt="next"
 src="../icons/next.gif"></A></td>
<td><A HREF="netdata.html"><img width=32 height=32 align=bottom border=0 alt="up"
 src="../icons/up.gif"></A></td>
<td><A HREF="MimeWriter-objects.html"><img width=32 height=32 align=bottom border=0 alt="previous"
 src="../icons/previous.gif"></A></td>
<td align=center bgcolor="#99CCFF" width="100%">
 <b class=title>Python Library Reference</b></td>
<td><A HREF="contents.html"><img width=32 height=32 align=bottom border=0 alt="contents"
 src="../icons/contents.gif"></A></td>
<td><a
 href="modindex.html"><img width=32 height=32 align=bottom border=0 alt="modules"
 src="../icons/modules.gif"></a></td>
<td><A HREF="genindex.html"><img width=32 height=32 align=bottom border=0 alt="index"
 src="../icons/index.gif"></A></td>
</tr></table><b class=navlabel>Next:</b> <span class=sectref><A HREF="MultiFile-objects.html">12.8.1 MultiFile Objects</A></span>
<b class=navlabel>Up:</b> <span class=sectref><A HREF="netdata.html">12. Internet Data Handling</A></span>
<b class=navlabel>Previous:</b> <span class=sectref><A HREF="MimeWriter-objects.html">12.7.1 MimeWriter Objects</A></span>
</div>
<!--End of Navigation Panel-->
<ADDRESS>
<hr>Send comments on this document to <a href="mailto:python-docs@python.org">python-docs@python.org</a>.
</ADDRESS>
</BODY>
</HTML>
