我正在创建一个python模块,其中包含一个显示pandas DataFrame(my_df
)的函数。
如果用户将模块导入Jupyter笔记本,我想提供"漂亮"使用类似以下内容格式化DataFrame:
from IPython.display import display, HTML
display(my_df)
如果用户不在Jupyter笔记本中,我想显示DataFrame的文本格式:
print(my_df)
如何检查代码是否从Jupyter笔记本运行?或者,如何从命令行以文本形式显示DataFrame,如果将HTML表单导入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)
答案 0 :(得分:9)
您无需检查代码是否从笔记本电脑运行;从命令行调用时,display()
打印文本。
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)
从命令行:
$ python test.py
bar foo
0 7 1
1 8 2
2 9 3
来自Jupyter笔记本:
<强>更新强>
要检查您是否在交互式Ipython shell(命令行或基于浏览器)中运行,请检查get_ipython
。 (改编自Ipython文档)
修改后的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)
这种方法将:
- 浏览器Jupyter笔记本中的漂亮印刷品
- 从命令行作为脚本运行时打印文本(例如python test.py
)
- 如果在Python shell中逐行运行,打印后它将不会变成交互式Ipython shell
答案 1 :(得分:1)
你应该查看os.environ。
在我的机器上,您可以在
中看到它os.environ['_']