1998-08-10 16:42:37 -03:00
|
|
|
\section{\module{StringIO} ---
|
1999-04-21 15:15:22 -03:00
|
|
|
Read and write strings as files}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
1999-04-21 15:15:22 -03:00
|
|
|
\declaremodule{standard}{StringIO}
|
1998-07-23 14:59:49 -03:00
|
|
|
\modulesynopsis{Read and write strings as if they were files.}
|
1997-03-03 12:01:21 -04:00
|
|
|
|
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
This module implements a file-like class, \class{StringIO},
|
1998-01-14 10:51:31 -04:00
|
|
|
that reads and writes a string buffer (also known as \emph{memory
|
2000-11-28 12:24:28 -04:00
|
|
|
files}). See the description of file objects for operations (section
|
1999-04-21 15:15:22 -03:00
|
|
|
\ref{bltin-file-objects}).
|
1997-03-03 12:01:21 -04:00
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
\begin{classdesc}{StringIO}{\optional{buffer}}
|
|
|
|
When a \class{StringIO} object is created, it can be initialized
|
1997-03-03 12:01:21 -04:00
|
|
|
to an existing string by passing the string to the constructor.
|
1998-03-27 01:27:08 -04:00
|
|
|
If no string is given, the \class{StringIO} will start empty.
|
2005-04-10 22:03:44 -03:00
|
|
|
In both cases, the initial file position starts at zero.
|
2000-11-28 12:24:28 -04:00
|
|
|
|
|
|
|
The \class{StringIO} object can accept either Unicode or 8-bit
|
|
|
|
strings, but mixing the two may take some care. If both are used,
|
2001-07-06 17:30:11 -03:00
|
|
|
8-bit strings that cannot be interpreted as 7-bit \ASCII{} (that
|
2000-11-28 12:24:28 -04:00
|
|
|
use the 8th bit) will cause a \exception{UnicodeError} to be raised
|
|
|
|
when \method{getvalue()} is called.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{classdesc}
|
1997-03-03 12:01:21 -04:00
|
|
|
|
1998-04-11 15:05:24 -03:00
|
|
|
The following methods of \class{StringIO} objects require special
|
|
|
|
mention:
|
|
|
|
|
1998-03-27 01:27:08 -04:00
|
|
|
\begin{methoddesc}{getvalue}{}
|
|
|
|
Retrieve the entire contents of the ``file'' at any time before the
|
2000-11-28 12:24:28 -04:00
|
|
|
\class{StringIO} object's \method{close()} method is called. See the
|
|
|
|
note above for information about mixing Unicode and 8-bit strings;
|
|
|
|
such mixing can cause this method to raise \exception{UnicodeError}.
|
1998-03-27 01:27:08 -04:00
|
|
|
\end{methoddesc}
|
|
|
|
|
|
|
|
\begin{methoddesc}{close}{}
|
|
|
|
Free the memory buffer.
|
|
|
|
\end{methoddesc}
|
1998-04-11 17:05:43 -03:00
|
|
|
|
2006-07-27 15:37:33 -03:00
|
|
|
Example usage:
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
import StringIO
|
|
|
|
|
|
|
|
output = StringIO.StringIO()
|
|
|
|
output.write('First line.\n')
|
|
|
|
print >>output, 'Second line.'
|
|
|
|
|
|
|
|
# Retrieve file contents -- this will be
|
|
|
|
# 'First line.\nSecond line.\n'
|
|
|
|
contents = output.getvalue()
|
|
|
|
|
|
|
|
# Close object and discard memory buffer --
|
|
|
|
# .getvalue() will now raise an exception.
|
|
|
|
output.close()
|
|
|
|
\end{verbatim}
|
|
|
|
|
1998-04-11 17:05:43 -03:00
|
|
|
|
1998-08-10 16:42:37 -03:00
|
|
|
\section{\module{cStringIO} ---
|
1999-04-21 15:15:22 -03:00
|
|
|
Faster version of \module{StringIO}}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
1999-02-18 17:13:03 -04:00
|
|
|
\declaremodule{builtin}{cStringIO}
|
1999-04-21 15:15:22 -03:00
|
|
|
\modulesynopsis{Faster version of \module{StringIO}, but not
|
|
|
|
subclassable.}
|
2004-01-08 11:01:08 -04:00
|
|
|
\moduleauthor{Jim Fulton}{jim@zope.com}
|
1999-02-18 17:13:03 -04:00
|
|
|
\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
|
1998-04-11 17:05:43 -03:00
|
|
|
|
|
|
|
The module \module{cStringIO} provides an interface similar to that of
|
1999-04-21 15:15:22 -03:00
|
|
|
the \refmodule{StringIO} module. Heavy use of \class{StringIO.StringIO}
|
1998-04-11 17:05:43 -03:00
|
|
|
objects can be made more efficient by using the function
|
|
|
|
\function{StringIO()} from this module instead.
|
|
|
|
|
|
|
|
Since this module provides a factory function which returns objects of
|
|
|
|
built-in types, there's no way to build your own version using
|
1999-04-21 15:15:22 -03:00
|
|
|
subclassing. Use the original \refmodule{StringIO} module in that case.
|
|
|
|
|
2000-11-28 12:24:28 -04:00
|
|
|
Unlike the memory files implemented by the \refmodule{StringIO}
|
|
|
|
module, those provided by this module are not able to accept Unicode
|
|
|
|
strings that cannot be encoded as plain \ASCII{} strings.
|
|
|
|
|
2007-08-08 10:03:45 -03:00
|
|
|
Calling \function{StringIO()} with a Unicode string parameter populates
|
|
|
|
the object with the buffer representation of the Unicode string, instead of
|
|
|
|
encoding the string.
|
|
|
|
|
2003-01-31 01:17:33 -04:00
|
|
|
Another difference from the \refmodule{StringIO} module is that calling
|
|
|
|
\function{StringIO()} with a string parameter creates a read-only object.
|
|
|
|
Unlike an object created without a string parameter, it does not have
|
2003-08-11 12:06:07 -03:00
|
|
|
write methods. These objects are not generally visible. They turn up in
|
|
|
|
tracebacks as \class{StringI} and \class{StringO}.
|
2003-01-31 01:17:33 -04:00
|
|
|
|
1999-04-21 15:15:22 -03:00
|
|
|
The following data objects are provided as well:
|
|
|
|
|
|
|
|
|
|
|
|
\begin{datadesc}{InputType}
|
|
|
|
The type object of the objects created by calling
|
|
|
|
\function{StringIO} with a string parameter.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{OutputType}
|
|
|
|
The type object of the objects returned by calling
|
|
|
|
\function{StringIO} with no parameters.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
|
|
|
|
There is a C API to the module as well; refer to the module source for
|
|
|
|
more information.
|
2006-07-27 15:37:33 -03:00
|
|
|
|
|
|
|
Example usage:
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
import cStringIO
|
|
|
|
|
|
|
|
output = cStringIO.StringIO()
|
|
|
|
output.write('First line.\n')
|
|
|
|
print >>output, 'Second line.'
|
|
|
|
|
|
|
|
# Retrieve file contents -- this will be
|
|
|
|
# 'First line.\nSecond line.\n'
|
|
|
|
contents = output.getvalue()
|
|
|
|
|
|
|
|
# Close object and discard memory buffer --
|
|
|
|
# .getvalue() will now raise an exception.
|
|
|
|
output.close()
|
|
|
|
\end{verbatim}
|
|
|
|
|