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 inital.

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 varialbe 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.