2017-05-21 9 views
8

私はpandas DataFrame(my_df)を表示する機能を持つpythonモジュールを作成しています。あなたがJupyterノートブックにいるかどうかチェックする方法

ユーザーがJupyterのノートブックにモジュールをインポートした場合、私は「かわいい」のようなもの使用してデータフレームのフォーマットをお届けしたいでしょう:ユーザーがJupyterノートブックにない場合

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

は、私が

print(my_df) 

コードがJupyterノートブックから実行されているかどうかを確認するにはどうすればよいですか?または、データシートをコマンドラインからテキスト形式で表示する方法と、Jupyterノートブックにインポートする場合にHTML形式を表示する方法はありますか?

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) 

答えて

6

でそれを見ることができます。 display()は、コマンドラインから呼び出されたときにテキストを表示します。

test.py:Jupyterノートブックから

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

:コマンドラインから

from IPython.display import display 
import pandas as pd 

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

notebook printout

UPDATE
インタラクティブなIpythonシェル(コマンドラインまたはブラウザベース)で実行しているかどうかを確認するには、get_ipythonをチェックしてください。

test.pyを修正(Ipythonドキュメントから適応):

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) 

このアプローチは以下となります。
- コマンドラインからスクリプトとして実行し、印刷テキスト - ブラウザJupyterノート
でプリティプリント(例:python test.py
- Pythonシェルで行単位で実行すると、印刷後にインタラクティブなIpythonシェルに変換されません。

+0

対話的なpythonシェルでは、シェル全体がJupyterのノートブックスタイルのCLIに変わります。 – mgoldwasser

+0

それは本当です - あなたはインタラクティブなPythonシェルから実行することについてあなたのポストに何も言及していませんでした。シンプルなコマンドラインから、それは必要に応じて動作します。 –

+0

対話型CLIの問題に対処するための私の更新答えを参照してください。 –

0

os.environを見る必要があります。私のマシン上で

あなたはコードがノートPCから実行されているかどうかを確認する必要はありません

os.environ['_'] 
+0

一部のシェルは_環境を設定しますv最後に実行されるプロセスです。これはうまくいくかもしれませんが、それは本当に信頼できるものではなく、私はこれに応じてより良い答えがあると思います。 –

関連する問題