URL: https://linuxfr.org/news/pyxshell-piper-des-flux-de-texte-en-pur-python Title: pyxshell : piper des flux de texte en pur Python Authors: nojhan Davy Defaud, Xavier Teyssier, Nÿco, claudex et Benoît Sibaud Date: 2013年01月16日T14:34:24+01:00 License: CC By-SA Tags: python3, shell, pipe, pipelines et python Score: 33 _pyxshell_ (à prononcer comme vous pouvez) est un module Python qui permet d’enchaîner des fonctions de traitement de flux avec un opérateur « tube » _— pipe_, en anglais — (`|`) , de la même manière qu’avec un _shell_. Si — comme moi — vous devez régulièrement analyser à la main des données textuelles diversement structurées sous différents environnements. Si vous affectionnez la ligne de commande sans raffoler de la syntaxe de Bash, vous apprécierez d’avoir tout sous la main à côté de vos outils Python favoris. Par exemple : ```python>>> out=[]>>> (random.randint(0,2) for i in range(10)) | map(lambda x: ["Oui ","nous sommes ","tous différents "][x]) | sort | uniq | tee(sys.stdout)> out Oui tous différents nous sommes>>> print(out) ['Oui ', 'tous différents ', 'nous sommes '] ``` ---- [Projet github](https://github.com/nojhan/pyxshell) [Documentation web](http://nojhan.github.com/pyxshell/) ---- Dit autrement, _pyxshell_ permet d’appeler séquentiellement des générateurs sur des structures de données itérables avec une [notation infixée](https://en.wikipedia.org/wiki/Infix_notation). Il descend du ciel avec un ensemble de fonctions qui rappellent celles de la pile GNU, principalement pour traiter des versets textuels ligne par ligne. Le module permet une redirection des flux vers des fichiers et/ou des variables à l’aide des vénérables opérateurs `>` et `>>`. Il permet également d’étendre l’utilisation des tubes à vos glorieuses fonctions, à l’aide d’un décorateur consacré : `@pipe`. Il dispose en sus d’augustes opérateurs permettant de combiner des flux (avec `+`) ou d’en faire le produit cartésien de leurs bienheureux éléments (avec `*`). _pyxshell_ vous est révélé sous la « [(Un)license](http://unlicense.org/) ». D’autres exemples tirés des écritures : ```python>>> import sys>>> from pyxshell.common import *>>> list( ['Vous', 'êtes', 'tous','des','individus'] | grep(r'[aeo]') ) ['Vous', 'êtes', 'tous', 'des']>>> ["Je dis que vous êtes le Messie","Et je m'y connais","J'en ai suivi un paquet"] | map(lambda x: "— "+x+"\n") | grep("'") | cut([-2,-1]) | traverse | glue> sys.stdout m'y connais un paquet ``` Pour les mécréants qui voudraient utiliser leurs commandes _shell_ de la même façon, depuis un interpréteur, mais sans avoir à utiliser des ré‐implémentations en pur Python, le module [_Plumbum_](http://plumbum.readthedocs.org/en/latest/) leur conviendra mieux.