# 35.10. `pipes` — Interface au pipelines shell

Code source : Lib/pipes.py

Le module `pipes` définit une classe permettant d’abstraire le concept de pipeline — une séquence de convertisseurs d’un fichier vers un autre.

Du fait que le module utilise les lignes de commandes /bin/sh, un shell POSIX ou compatible est requis pour `os.system()` et `os.popen()`.

Le module `pipes` définit la classe suivante :

class `pipes.``Template`

  Une abstraction d’un pipeline.

Exemple :

    >>> 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'

## 35.10.1. L’Objet Template

Les méthodes de l’objet Template :

`Template.``reset`()

  Réinitialise un modèle de pipeline à son état initial.

`Template.``clone`()

  Renvoie un nouveau modèle de pipeline, équivalent.

`Template.``debug`(flag)

  Si flag est vrai, active le débogage. Sinon, le désactive. Quand le débogage est actif, les commandes à exécuter seront affichée et le shell est pourvu de la commande `set -x` afin d’être plus verbeux.

`Template.``append`(cmd, kind)

  Ajoute une nouvelle action à la fin. La variable cmd doit être une commande bourne shell valide. La variable kind est composée de deux lettres.

  La première lettre peut soit être `'-'` (qui signifie que la commande lit sa sortie standard), soit `'f'` (qui signifie que la commande lit un fichier donné par la ligne de commande), soit `'.'` (qui signifie que la commande ne lit pas d’entrée, et donc doit être la première.)

  De même, la seconde lettre peut soit être `'-'` (qui signifie que la commande écrit sur la sortie standard), soit `'f'` (qui signifie que la commande écrit sur un fichier donné par la ligne de commande), soit `'.'` (qui signifie que la commande n’écrit rien, et donc doit être la dernière.)

`Template.``prepend`(cmd, kind)

  Ajoute une nouvelle action au début. Voir `append()` pour plus d’explications sur les arguments.

`Template.``open`(file, mode)

  Renvoie un objet file-like, ouvert à file, mais permettant d’écrire vers le pipeline ou de lire depuis celui-ci. À noter que seulement un des deux (“r” ou “w”) peut être donné.

`Template.``copy`(infile, outfile)

  Copie infile vers outfile au travers du pipe.