2013-12-20 2 views
15

Ich möchte ein Bash-Skript in meinem Ipython-Notizbuch ausführen und die Ausgabe als String in einer Python-Variablen für die weitere Bearbeitung speichern. Grundsätzlich möchte ich auf die Ausgabe des der Bash-Magie auf eine Variable, Zum Beispiel die Ausgabe von so etwas wie dieses:Pipe Ipython magische Ausgabe auf eine Variable?

%%bash 
some_command [options] foo bar 

Antwort

17

Was dies mit:

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

statt der %%bash Magie? Mit dem Symbol ! wird der folgende Befehl als Shell-Befehl ausgeführt und die Ergebnisse werden alle in myvar gespeichert. Um mehrere Befehle auszuführen und die Ausgaben aller zu sammeln, erstellen Sie einfach ein schnelles Shell-Skript.

12

Für Vollständigkeit, wenn Sie immer noch die %%bash Zelle Magie verwenden möchten, können Sie die --out und --err Flags übergeben die Ausgaben von der stdout und stderr auf eine Variable Ihrer Wahl zu umleiten.

Von der doucumentation:

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

die Ausgänge in den Variablen gespeichert werden output und error so dass:

print(error) 
print(output) 

auf die Python Konsole gedruckt wird:

hello, stderr 
hi, stdout 
0

Hinweis der Unterschied im Variablentyp zwischen @ MattDMo (SList) und @oLas (str) Antworten:

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