# `pipes` — Interfaz para tuberías de shell

Código fuente: Lib/pipes.py

Obsoleto desde la versión 3.11, se eliminará en la versión 3.13: El módulo `pipes` está obsoleto (para más detalles ver PEP 594. Por favor, utilice el módulo `subprocess` en su lugar.

El módulo `pipes` define una clase para abstraer el concepto de una tubería — una secuencia de conversores de un archivo a otro.

Debido a que el módulo utiliza líneas de comando /bin/sh, se requiere una interfaz POSIX o un shell compatible para ejecutar `os.system()` y `os.popen()`.

Disponibilidad: Unix. No disponible en VxWorks.

El módulo `pipes` define la siguiente clase:

class pipes.Template

  Una abstracción de una tubería.

Ejemplo:

    >>> import pipes
    >>> t = pipes.Template()
    >>> t.append('tr a-z A-Z', '--')
    >>> f = t.open('pipefile', 'w')
    >>> f.write('hello world')
    >>> f.close()
    >>> open('pipefile').read()
    'HELLO WORLD'

## Objetos Template

Las instancias Template tienen los siguientes métodos:

Template.reset()

  Recupera el estado inicial del Template de una tubería.

Template.clone()

  Retorna una nueva y equivalente instancia del Template de una tubería.

Template.debug(flag)

  Si flag es verdadero, activa la depuración. Si no, la depuración no se activa. Cuando la depuración está activada, los comandos a ejecutar son impresos, y se le añade el comando `set -x` a la shell para ser más verboso.

Template.append(cmd, kind)

  Añade una nueva acción al final. La variable cmd tiene que ser un comando válido de Bourne Shell. La variable kind está formada por dos letras.

  La primera letra puede ser tanto `'-'` (que significa que el comando lee su entrada de datos estándar), `'f'` (que significa que el comando lee un fichero desde línea de comandos) o `'.'` (que significa que el comando no lee ninguna entrada de datos, y por tanto tiene que ser el primero.)

  De manera parecida, la segunda letra puede ser tanto `'-'` (que significa que el comando escribe a la salida de datos estándar), `'f'` (que significa que el comando escribirá a un fichero de la línea de comandos) o `'.'` (que significa que el comando no escribe nada, por lo que debe ser el primero)

Template.prepend(cmd, kind)

  Añade una nueva acción al principio. Ver `append()` para la explicación de los argumentos.

Template.open(file, mode)

  Retorna un objeto similar a un fichero, abierto a file, pero leído o escrito por la tubería. Destacar que solo una de `'r'` o `'w'` puede ser añadida.

Template.copy(infile, outfile)

  Copia infile a outfile a través de la tubería.