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 recostackr la salida de todos ellos, simplemente arme un script de shell rápido.
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 doucumentación :
%%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
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