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