| 
									
										
										
										
											1999-06-21 18:25:49 +00:00
										 |  |  | \section{\module{pipes} --- | 
					
						
							|  |  |  |          Interface to shell pipelines} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \declaremodule{standard}{pipes} | 
					
						
							|  |  |  |   \platform{Unix} | 
					
						
							| 
									
										
										
										
											2000-12-01 15:25:23 +00:00
										 |  |  | \sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il} | 
					
						
							| 
									
										
										
										
											2001-05-09 15:50:17 +00:00
										 |  |  | \modulesynopsis{A Python interface to \UNIX\ shell pipelines.} | 
					
						
							| 
									
										
										
										
											1999-06-21 18:25:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The \module{pipes} module defines a class to abstract the concept of | 
					
						
							|  |  |  | a \emph{pipeline} --- a sequence of convertors from one file to  | 
					
						
							|  |  |  | another. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Because the module uses \program{/bin/sh} command lines, a \POSIX{} or | 
					
						
							|  |  |  | compatible shell for \function{os.system()} and \function{os.popen()} | 
					
						
							|  |  |  | is required. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The \module{pipes} module defines the following class: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{classdesc}{Template}{} | 
					
						
							|  |  |  | An abstraction of a pipeline. | 
					
						
							| 
									
										
										
										
											1999-06-21 18:36:09 +00:00
										 |  |  | \end{classdesc} | 
					
						
							| 
									
										
										
										
											1999-06-21 18:25:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Example: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | >>> import pipes | 
					
						
							|  |  |  | >>> t=pipes.Template() | 
					
						
							|  |  |  | >>> t.append('tr a-z A-Z', '--') | 
					
						
							|  |  |  | >>> f=t.open('/tmp/1', 'w') | 
					
						
							|  |  |  | >>> f.write('hello world') | 
					
						
							|  |  |  | >>> f.close() | 
					
						
							|  |  |  | >>> open('/tmp/1').read() | 
					
						
							|  |  |  | 'HELLO WORLD' | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \subsection{Template Objects \label{template-objects}} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Template objects following methods: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{reset}{} | 
					
						
							|  |  |  | Restore a pipeline template to its initial state. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{clone}{} | 
					
						
							|  |  |  | Return a new, equivalent, pipeline template. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{debug}{flag} | 
					
						
							|  |  |  | If \var{flag} is true, turn debugging on. Otherwise, turn debugging | 
					
						
							|  |  |  | off. When debugging is on, commands to be executed are printed, and | 
					
						
							|  |  |  | the shell is given \code{set -x} command to be more verbose. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{append}{cmd, kind} | 
					
						
							|  |  |  | Append a new action at the end. The \var{cmd} variable must be a valid | 
					
						
							|  |  |  | bourne shell command. The \var{kind} variable consists of two letters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The first letter can be either of \code{'-'} (which means the command | 
					
						
							|  |  |  | reads its standard input), \code{'f'} (which means the commands reads | 
					
						
							|  |  |  | a given file on the command line) or \code{'.'} (which means the commands | 
					
						
							|  |  |  | reads no input, and hence must be first.) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-16 19:01:10 +00:00
										 |  |  | Similarly, the second letter can be either of \code{'-'} (which means  | 
					
						
							| 
									
										
										
										
											1999-06-21 18:25:49 +00:00
										 |  |  | the command writes to standard output), \code{'f'} (which means the  | 
					
						
							|  |  |  | command writes a file on the command line) or \code{'.'} (which means | 
					
						
							|  |  |  | the command does not write anything, and hence must be last.) | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{prepend}{cmd, kind} | 
					
						
							|  |  |  | Add a new action at the beginning. See \method{append()} for explanations | 
					
						
							|  |  |  | of the arguments. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{open}{file, mode} | 
					
						
							|  |  |  | Return a file-like object, open to \var{file}, but read from or | 
					
						
							|  |  |  | written to by the pipeline.  Note that only one of \code{'r'}, | 
					
						
							|  |  |  | \code{'w'} may be given. | 
					
						
							|  |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}{copy}{infile, outfile} | 
					
						
							|  |  |  | Copy \var{infile} to \var{outfile} through the pipe. | 
					
						
							|  |  |  | \end{methoddesc} |