tricks tips notebook magic and python python-2.7 ipython ipython-notebook ipython-magic

tips - Pipe Ipython salida mágica a una variable?



show execution time jupyter notebook (3)

Quiero ejecutar un script de bash en mi ipython Notebook y guardar la salida como una cadena en una variable de python para una mayor manipulación. Básicamente quiero canalizar la salida de la magia bash a una variable, por ejemplo, la salida de algo como esto:

%%bash some_command [options] foo bar


¿Qué hay de usar esto?

myvar = !some_command --option1 --option2 foo bar

En lugar de la magia %%bash ? Usando el ! El símbolo ejecuta el siguiente comando como un comando de shell y todos los resultados se almacenan en myvar . Para ejecutar varios comandos y recopilar la salida de todos ellos, simplemente arme un script de shell rápido.


Observe la diferencia en el tipo de variable entre las respuestas @MattDMo ( SList ) y @oLas ( str ):

In [1]: output = !whoami In [2]: type(output) Out[2]: IPython.utils.text.SList In [3]: %%bash --out output ...: whoami In [4]: type(output) Out[4]: str


Para completar, si aún desea utilizar la magia de celda de %%bash , puede pasar las --out y --err para redirigir las salidas del stdout y stderr a una variable de su elección.

De la doucumentation :

%%bash --out output --err error echo "hi, stdout" echo "hello, stderr" >&2

almacenará las salidas en las variables de output y error para que:

print(error) print(output)

imprimirá a la consola de python:

hello, stderr hi, stdout