| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | \section{\module{csv} --- CSV File Reading and Writing} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \declaremodule{standard}{csv} | 
					
						
							|  |  |  | \modulesynopsis{Write and read tabular data to and from delimited files.} | 
					
						
							| 
									
										
										
										
											2003-04-24 18:47:31 +00:00
										 |  |  | \sectionauthor{Skip Montanaro}{skip@pobox.com} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \versionadded{2.3} | 
					
						
							|  |  |  | \index{csv} | 
					
						
							|  |  |  | \indexii{data}{tabular} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The so-called CSV (Comma Separated Values) format is the most common import | 
					
						
							|  |  |  | and export format for spreadsheets and databases.  There is no ``CSV | 
					
						
							|  |  |  | standard'', so the format is operationally defined by the many applications | 
					
						
							|  |  |  | which read and write it.  The lack of a standard means that subtle | 
					
						
							|  |  |  | differences often exist in the data produced and consumed by different | 
					
						
							|  |  |  | applications.  These differences can make it annoying to process CSV files | 
					
						
							|  |  |  | from multiple sources.  Still, while the delimiters and quoting characters | 
					
						
							|  |  |  | vary, the overall format is similar enough that it is possible to write a | 
					
						
							|  |  |  | single module which can efficiently manipulate such data, hiding the details | 
					
						
							|  |  |  | of reading and writing the data from the programmer. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 15:14:49 +00:00
										 |  |  | The \module{csv} module implements classes to read and write tabular data in | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | CSV format.  It allows programmers to say, ``write this data in the format | 
					
						
							|  |  |  | preferred by Excel,'' or ``read data from this file which was generated by | 
					
						
							|  |  |  | Excel,'' without knowing the precise details of the CSV format used by | 
					
						
							|  |  |  | Excel.  Programmers can also describe the CSV formats understood by other | 
					
						
							|  |  |  | applications or define their own special-purpose CSV formats. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 15:14:49 +00:00
										 |  |  | The \module{csv} module's \class{reader} and \class{writer} objects read and | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | write sequences.  Programmers can also read and write data in dictionary | 
					
						
							|  |  |  | form using the \class{DictReader} and \class{DictWriter} classes. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \begin{notice} | 
					
						
							|  |  |  |   This version of the \module{csv} module doesn't support Unicode | 
					
						
							|  |  |  |   input.  Also, there are currently some issues regarding \ASCII{} NUL | 
					
						
							|  |  |  |   characters.  Accordingly, all input should generally be printable | 
					
						
							|  |  |  |   \ASCII{} to be safe.  These restrictions will be removed in the future. | 
					
						
							|  |  |  | \end{notice} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{seealso} | 
					
						
							|  |  |  | %  \seemodule{array}{Arrays of uniformly types numeric values.}
 | 
					
						
							|  |  |  |   \seepep{305}{CSV File API} | 
					
						
							|  |  |  |          {The Python Enhancement Proposal which proposed this addition | 
					
						
							|  |  |  |           to Python.} | 
					
						
							|  |  |  | \end{seealso} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-31 05:44:54 +00:00
										 |  |  | \subsection{Module Contents \label{csv-contents}} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 15:14:49 +00:00
										 |  |  | The \module{csv} module defines the following functions: | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{reader}{csvfile\optional{, | 
					
						
							|  |  |  |                          dialect=\code{'excel'}\optional{, fmtparam}}} | 
					
						
							|  |  |  | Return a reader object which will iterate over lines in the given | 
					
						
							|  |  |  | {}\var{csvfile}.  \var{csvfile} can be any object which supports the | 
					
						
							|  |  |  | iterator protocol and returns a string each time its \method{next} | 
					
						
							| 
									
										
										
										
											2003-07-02 15:32:48 +00:00
										 |  |  | method is called.  If \var{csvfile} is a file object, it must be opened with | 
					
						
							|  |  |  | the 'b' flag on platforms where that makes a difference.  An optional | 
					
						
							|  |  |  | {}\var{dialect} parameter can be given | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | which is used to define a set of parameters specific to a particular CSV | 
					
						
							|  |  |  | dialect.  It may be an instance of a subclass of the \class{Dialect} | 
					
						
							|  |  |  | class or one of the strings returned by the \function{list_dialects} | 
					
						
							|  |  |  | function.  The other optional {}\var{fmtparam} keyword arguments can be | 
					
						
							|  |  |  | given to override individual formatting parameters in the current | 
					
						
							|  |  |  | dialect.  For more information about the dialect and formatting | 
					
						
							| 
									
										
										
										
											2003-09-10 18:54:49 +00:00
										 |  |  | parameters, see section~\ref{csv-fmt-params}, ``Dialects and Formatting | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | Parameters'' for details of these parameters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | All data read are returned as strings.  No automatic data type | 
					
						
							|  |  |  | conversion is performed. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{writer}{csvfile\optional{, | 
					
						
							|  |  |  |                          dialect=\code{'excel'}\optional{, fmtparam}}} | 
					
						
							|  |  |  | Return a writer object responsible for converting the user's data into | 
					
						
							| 
									
										
										
										
											2003-07-02 15:32:48 +00:00
										 |  |  | delimited strings on the given file-like object.  \var{csvfile} can be any | 
					
						
							|  |  |  | object with a \function{write} method.  If \var{csvfile} is a file object, | 
					
						
							|  |  |  | it must be opened with the 'b' flag on platforms where that makes a | 
					
						
							|  |  |  | difference.  An optional | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | {}\var{dialect} parameter can be given which is used to define a set of | 
					
						
							|  |  |  | parameters specific to a particular CSV dialect.  It may be an instance | 
					
						
							|  |  |  | of a subclass of the \class{Dialect} class or one of the strings | 
					
						
							|  |  |  | returned by the \function{list_dialects} function.  The other optional | 
					
						
							|  |  |  | {}\var{fmtparam} keyword arguments can be given to override individual | 
					
						
							|  |  |  | formatting parameters in the current dialect.  For more information | 
					
						
							|  |  |  | about the dialect and formatting parameters, see | 
					
						
							| 
									
										
										
										
											2003-09-10 18:54:49 +00:00
										 |  |  | section~\ref{csv-fmt-params}, ``Dialects and Formatting Parameters'' for | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | details of these parameters.  To make it as easy as possible to | 
					
						
							|  |  |  | interface with modules which implement the DB API, the value | 
					
						
							|  |  |  | \constant{None} is written as the empty string.  While this isn't a | 
					
						
							|  |  |  | reversible transformation, it makes it easier to dump SQL NULL data values | 
					
						
							|  |  |  | to CSV files without preprocessing the data returned from a | 
					
						
							|  |  |  | \code{cursor.fetch*()} call.  All other non-string data are stringified | 
					
						
							|  |  |  | with \function{str()} before being written. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{register_dialect}{name, dialect} | 
					
						
							|  |  |  | Associate \var{dialect} with \var{name}.  \var{dialect} must be a subclass | 
					
						
							|  |  |  | of \class{csv.Dialect}.  \var{name} must be a string or Unicode object. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{unregister_dialect}{name} | 
					
						
							|  |  |  | Delete the dialect associated with \var{name} from the dialect registry.  An | 
					
						
							|  |  |  | \exception{Error} is raised if \var{name} is not a registered dialect | 
					
						
							|  |  |  | name. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{get_dialect}{name} | 
					
						
							|  |  |  | Return the dialect associated with \var{name}.  An \exception{Error} is | 
					
						
							|  |  |  | raised if \var{name} is not a registered dialect name. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{list_dialects}{} | 
					
						
							|  |  |  | Return the names of all registered dialects. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 15:14:49 +00:00
										 |  |  | The \module{csv} module defines the following classes: | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-10-03 14:03:01 +00:00
										 |  |  | \begin{classdesc}{DictReader}{csvfile\optional{, | 
					
						
							|  |  |  | 			      fieldnames=\constant{None},\optional{, | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  |                               restkey=\constant{None}\optional{, | 
					
						
							|  |  |  | 			      restval=\constant{None}\optional{, | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  |                               dialect=\code{'excel'}\optional{, | 
					
						
							| 
									
										
										
										
											2003-10-03 14:03:01 +00:00
										 |  |  | 			      fmtparam}}}}}} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | Create an object which operates like a regular reader but maps the | 
					
						
							| 
									
										
										
										
											2003-10-03 14:03:01 +00:00
										 |  |  | information read into a dict whose keys are given by the optional | 
					
						
							|  |  |  | {} \var{fieldnames} | 
					
						
							|  |  |  | parameter.  If the \var{fieldnames} parameter is omitted, the values in | 
					
						
							|  |  |  | the first row of the \var{csvfile} will be used as the fieldnames. | 
					
						
							|  |  |  | If the row read has fewer fields than the fieldnames sequence, | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | the value of \var{restval} will be used as the default value.  If the row | 
					
						
							|  |  |  | read has more fields than the fieldnames sequence, the remaining data is | 
					
						
							|  |  |  | added as a sequence keyed by the value of \var{restkey}.  If the row read | 
					
						
							|  |  |  | has fewer fields than the fieldnames sequence, the remaining keys take the | 
					
						
							| 
									
										
										
										
											2003-08-31 05:44:54 +00:00
										 |  |  | value of the optional \var{restval} parameter.  All other parameters are | 
					
						
							| 
									
										
										
										
											2003-07-02 15:32:48 +00:00
										 |  |  | interpreted as for \class{reader} objects. | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | \end{classdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{classdesc}{DictWriter}{csvfile, fieldnames\optional{, | 
					
						
							|  |  |  |                               restval=""\optional{, | 
					
						
							|  |  |  |                               extrasaction=\code{'raise'}\optional{, | 
					
						
							|  |  |  |                               dialect=\code{'excel'}\optional{, fmtparam}}}}} | 
					
						
							|  |  |  | Create an object which operates like a regular writer but maps dictionaries | 
					
						
							|  |  |  | onto output rows.  The \var{fieldnames} parameter identifies the order in | 
					
						
							|  |  |  | which values in the dictionary passed to the \method{writerow()} method are | 
					
						
							|  |  |  | written to the \var{csvfile}.  The optional \var{restval} parameter | 
					
						
							|  |  |  | specifies the value to be written if the dictionary is missing a key in | 
					
						
							|  |  |  | \var{fieldnames}.  If the dictionary passed to the \method{writerow()} | 
					
						
							|  |  |  | method contains a key not found in \var{fieldnames}, the optional | 
					
						
							|  |  |  | \var{extrasaction} parameter indicates what action to take.  If it is set | 
					
						
							|  |  |  | to \code{'raise'} a \exception{ValueError} is raised.  If it is set to | 
					
						
							|  |  |  | \code{'ignore'}, extra values in the dictionary are ignored.  All other | 
					
						
							| 
									
										
										
										
											2003-07-02 15:32:48 +00:00
										 |  |  | parameters are interpreted as for \class{writer} objects. | 
					
						
							| 
									
										
										
										
											2003-10-03 14:03:01 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Note that unlike the \class{DictReader} class, the \var{fieldnames} | 
					
						
							|  |  |  | parameter of the \class{DictWriter} is not optional.  Since Python's | 
					
						
							|  |  |  | \class{dict} objects are not ordered, there is not enough information | 
					
						
							|  |  |  | available to deduce the order in which the row should be written to the | 
					
						
							|  |  |  | \var{csvfile}. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | \end{classdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{classdesc*}{Dialect}{} | 
					
						
							|  |  |  | The \class{Dialect} class is a container class relied on primarily for its | 
					
						
							|  |  |  | attributes, which are used to define the parameters for a specific | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \class{reader} or \class{writer} instance. | 
					
						
							|  |  |  | \end{classdesc*} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-05-19 15:33:36 +00:00
										 |  |  | \begin{classdesc}{Sniffer}{} | 
					
						
							|  |  |  | The \class{Sniffer} class is used to deduce the format of a CSV file. | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \end{classdesc} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | The \class{Sniffer} class provides a single method: | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-05-19 15:33:36 +00:00
										 |  |  | \begin{methoddesc}{sniff}{sample\optional{,delimiters=None}} | 
					
						
							|  |  |  | Analyze the given \var{sample} and return a \class{Dialect} subclass | 
					
						
							|  |  |  | reflecting the parameters found.  If the optional \var{delimiters} parameter | 
					
						
							|  |  |  | is given, it is interpreted as a string containing possible valid delimiter | 
					
						
							|  |  |  | characters. | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \begin{methoddesc}{has_header}{sample} | 
					
						
							|  |  |  | Analyze the sample text (presumed to be in CSV format) and return | 
					
						
							|  |  |  | \constant{True} if the first row appears to be a series of column | 
					
						
							|  |  |  | headers. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The \module{csv} module defines the following constants: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-06-04 15:30:13 +00:00
										 |  |  | \begin{datadesc}{QUOTE_ALL} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | Instructs \class{writer} objects to quote all fields. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{datadesc}{QUOTE_MINIMAL} | 
					
						
							|  |  |  | Instructs \class{writer} objects to only quote those fields which contain | 
					
						
							|  |  |  | the current \var{delimiter} or begin with the current \var{quotechar}. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{datadesc}{QUOTE_NONNUMERIC} | 
					
						
							|  |  |  | Instructs \class{writer} objects to quote all non-numeric fields. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{datadesc}{QUOTE_NONE} | 
					
						
							|  |  |  | Instructs \class{writer} objects to never quote fields.  When the current | 
					
						
							|  |  |  | \var{delimiter} occurs in output data it is preceded by the current | 
					
						
							|  |  |  | \var{escapechar} character.  When \constant{QUOTE_NONE} is in effect, it | 
					
						
							|  |  |  | is an error not to have a single-character \var{escapechar} defined, even if | 
					
						
							|  |  |  | no data to be written contains the \var{delimiter} character. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The \module{csv} module defines the following exception: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{excdesc}{Error} | 
					
						
							|  |  |  | Raised by any of the functions when an error is detected. | 
					
						
							|  |  |  | \end{excdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \subsection{Dialects and Formatting Parameters\label{csv-fmt-params}} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | To make it easier to specify the format of input and output records, | 
					
						
							|  |  |  | specific formatting parameters are grouped together into dialects.  A | 
					
						
							|  |  |  | dialect is a subclass of the \class{Dialect} class having a set of specific | 
					
						
							|  |  |  | methods and a single \method{validate()} method.  When creating \class{reader} | 
					
						
							|  |  |  | or \class{writer} objects, the programmer can specify a string or a subclass | 
					
						
							|  |  |  | of the \class{Dialect} class as the dialect parameter.  In addition to, or | 
					
						
							|  |  |  | instead of, the \var{dialect} parameter, the programmer can also specify | 
					
						
							|  |  |  | individual formatting parameters, which have the same names as the | 
					
						
							| 
									
										
										
										
											2003-08-31 05:44:54 +00:00
										 |  |  | attributes defined below for the \class{Dialect} class. | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | Dialects support the following attributes: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{delimiter} | 
					
						
							|  |  |  | A one-character string used to separate fields.  It defaults to \code{','}. | 
					
						
							|  |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{doublequote} | 
					
						
							|  |  |  | Controls how instances of \var{quotechar} appearing inside a field should be | 
					
						
							| 
									
										
										
										
											2004-01-21 13:34:35 +00:00
										 |  |  | themselves be quoted.  When \constant{True}, the character is doubled. | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | When \constant{False}, the \var{escapechar} must be a one-character string | 
					
						
							|  |  |  | which is used as a prefix to the \var{quotechar}.  It defaults to | 
					
						
							|  |  |  | \constant{True}. | 
					
						
							|  |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{escapechar} | 
					
						
							|  |  |  | A one-character string used to escape the \var{delimiter} if \var{quoting} | 
					
						
							|  |  |  | is set to \constant{QUOTE_NONE}.  It defaults to \constant{None}. | 
					
						
							|  |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{lineterminator} | 
					
						
							|  |  |  | The string used to terminate lines in the CSV file.  It defaults to | 
					
						
							|  |  |  | \code{'\e r\e n'}. | 
					
						
							|  |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{quotechar} | 
					
						
							|  |  |  | A one-character string used to quote elements containing the \var{delimiter} | 
					
						
							|  |  |  | or which start with the \var{quotechar}.  It defaults to \code{'"'}. | 
					
						
							|  |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{quoting} | 
					
						
							|  |  |  | Controls when quotes should be generated by the writer.  It can take on any | 
					
						
							| 
									
										
										
										
											2003-08-31 05:44:54 +00:00
										 |  |  | of the \constant{QUOTE_*} constants (see section~\ref{csv-contents}) | 
					
						
							|  |  |  | and defaults to \constant{QUOTE_MINIMAL}.  | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{memberdesc}[Dialect]{skipinitialspace} | 
					
						
							|  |  |  | When \constant{True}, whitespace immediately following the \var{delimiter} | 
					
						
							|  |  |  | is ignored.  The default is \constant{False}. | 
					
						
							|  |  |  | \end{memberdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \subsection{Reader Objects} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | Reader objects (\class{DictReader} instances and objects returned by | 
					
						
							| 
									
										
										
										
											2003-08-31 05:44:54 +00:00
										 |  |  | the \function{reader()} function) have the following public methods: | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \begin{methoddesc}[csv reader]{next}{} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | Return the next row of the reader's iterable object as a list, parsed | 
					
						
							|  |  |  | according to the current dialect. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \subsection{Writer Objects} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-01-21 13:47:04 +00:00
										 |  |  | \class{Writer} objects (\class{DictWriter} instances and objects returned by | 
					
						
							|  |  |  | the \function{writer()} function) have the following public methods.  A | 
					
						
							|  |  |  | {}\var{row} must be a sequence of strings or numbers for \class{Writer} | 
					
						
							|  |  |  | objects and a dictionary mapping fieldnames to strings or numbers (by | 
					
						
							|  |  |  | passing them through \function{str()} first) for {}\class{DictWriter} | 
					
						
							|  |  |  | objects.  Note that complex numbers are written out surrounded by parens. | 
					
						
							|  |  |  | This may cause some problems for other programs which read CSV files | 
					
						
							|  |  |  | (assuming they support complex numbers at all). | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \begin{methoddesc}[csv writer]{writerow}{row} | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | Write the \var{row} parameter to the writer's file object, formatted | 
					
						
							|  |  |  | according to the current dialect. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | \begin{methoddesc}[csv writer]{writerows}{rows} | 
					
						
							| 
									
										
										
										
											2004-01-21 13:47:04 +00:00
										 |  |  | Write all the \var{rows} parameters (a list of \var{row} objects as | 
					
						
							|  |  |  | described above) to the writer's file object, formatted | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | according to the current dialect. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \subsection{Examples} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The ``Hello, world'' of csv reading is | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | import csv | 
					
						
							|  |  |  | reader = csv.reader(file("some.csv")) | 
					
						
							|  |  |  | for row in reader: | 
					
						
							|  |  |  |     print row | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The corresponding simplest possible writing example is | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											2003-04-25 18:02:34 +00:00
										 |  |  | import csv | 
					
						
							|  |  |  | writer = csv.writer(file("some.csv", "w")) | 
					
						
							|  |  |  | for row in someiterable: | 
					
						
							|  |  |  |     writer.writerow(row) | 
					
						
							| 
									
										
										
										
											2003-03-20 23:29:12 +00:00
										 |  |  | \end{verbatim} |