2017-05-21 20 views
8

Tworzę moduł python z funkcją wyświetlania pandas DataFrame (my_df).Jak sprawdzić, czy jesteś w notebooku Jupyter

Jeśli użytkownik importuje moduł do notebooka Jupyter, chciałbym dostarczyć „ładny” formatowanie dla DataFrame za pomocą coś jak:

from IPython.display import display, HTML 
display(my_df) 

Jeśli użytkownik nie jest w zeszycie Jupyter, ja chciałbym wyświetlić formularz tekstowy DataFrame:

print(my_df) 

Jak mogę sprawdzić, czy kod jest uruchamiany z notatnika Jupyter? Albo, jak mogę wyświetlić DataFrame w formie tekstowej z linii poleceń, a wyświetlić formularz HTML, jeśli jest on importowany do notatnika Jupyter?

from IPython.display import display, HTML 

def my_func(my_df): 
    if [... code to check for Jupyter notebook here ...]: 
     display(my_df) 
    else: 
     print(my_df) 

Odpowiedz

6

Nie trzeba sprawdzić, czy kod jest uruchamiany z notebooka; display() drukuje tekst po wywołaniu z wiersza poleceń.

test.py:

from IPython.display import display 
import pandas as pd 

my_df = pd.DataFrame({'foo':[1,2,3],'bar':[7,8,9]}) 
display(my_df) 

Z wiersza poleceń:

$ python test.py 
    bar foo 
0 7 1 
1 8 2 
2 9 3 

z notebooka Jupyter:

notebook printout

UPDATE
Aby sprawdzić, czy używasz interaktywnej powłoki Ipython (w wierszu polecenia lub w przeglądarce), sprawdź numer get_ipython. (Zaadaptowane z Ipython docs)

Modified test.py:

from IPython.display import display, HTML 
import pandas as pd 
my_df = pd.DataFrame({'foo':[1,2,3],'bar':[7,8,9]}) 

try: 
    get_ipython 
    display(my_df) 
except: 
    print(my_df) 

Takie podejście:
- całkiem-print w przeglądarce Jupyter notebook
- tekst do druku, gdy uruchamiane jako skrypt z linii poleceń (np. python test.py) - jeśli uruchomi się wiersz po linii w powłoce Pythona, nie zamieni się w interaktywną powłokę Ipython po wydrukowaniu

+0

W interaktywnej powłoce Pythona zmienia ona całą powłokę w interfejs CLI środowiska Juwater. – mgoldwasser

+0

To prawda - w swoim wpisie nic nie wspominałeś o uruchomieniu z interaktywnej powłoki Pythona. Z prostego wywołania linii poleceń działa zgodnie z oczekiwaniami. –

+0

Wyświetl moją zaktualizowaną odpowiedź dotyczącą rozwiązania interaktywnego problemu z interfejsem CLI. –

0

Powinieneś wyglądać w os.environ.

Na moim komputerze można zobaczyć go w

os.environ['_'] 
+0

Niektóre powłoki ustawią _ środowisko v może być ostatnim przebiegiem procesu. Chociaż może to zadziałać, nie jest to naprawdę niezawodne i podejrzewam, że jest lepsza odpowiedź, niż poleganie na tym. –

Powiązane problemy