逐行将.py flie导入Jupyter Notebook

时间:2018-11-29 09:48:36

标签: python jupyter-notebook ipython jupyter ipython-magic

我更喜欢在VSCode上编写我的python代码,因为它具有智能和自动完成功能。但是我宁愿在Jupyter笔记本上查看和调试代码,以更好地可视化我正在使用的数据。

我知道我可以使用神奇的%load%loadpy命令将任何文件加载到Jupyter中。但是他们将整个文件加载到单个单元格中。

由于我想查看某些操作的中间结果,因此我想以一种将文件上的每一行分配到笔记本上一个单元格的方式导入文件。除非它是函数或条件语句(换句话说,就是带有缩进的任何内容);否则在这种情况下,应将整个块添加到一个单元格中。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

AFAIK,将文件加载到Jupyter笔记本中时无法执行此操作。但是,通过使用ctrl + shift +-,您可以轻松地将大单元拆分为多个单元。这会将您的单元格拆分到光标当时所在的位置。

我不知道您的文件有多大,但这是拆分单元格的一种非常快速有效的方法,因此也许对您有用=)

答案 1 :(得分:1)

您可以使用nbformat模块以编程方式创建新的Jupyter笔记本文件。让我用一个有效的代码演示所有步骤。

下面是Jupyter笔记本中的单元格。该单元格具有一个魔术命令,该命令会创建一个名为script001.py的文件。

%%writefile script001.py
x = 10
print('x is: %s' % x)
y = 20
print('y is: %s' % y)
z = x+y
print('z is: %s' % z)

下面第二个单元格中的代码创建一个名为split_cells.ipynb的新笔记本。

import nbformat as nbf

# create notebook object
nb2 = nbf.v4.new_notebook()

# prep cells' content for the new notebook
code = []
with open('script001.py') as fi:
    for aline in fi:
        code.append(aline.rstrip())

# take each line of code as single cells
nb2['cells'] = [nbf.v4.new_code_cell(ea) for ea in code]

# name of notebook to create
fname = 'split_cells.ipynb'

# create new notebook file
with open(fname, 'w') as fj:
    nbf.write(nb2, fj)

打开新笔记本split_cells.ipynb时,将具有以下单元格:

In[]: x = 10

In[]: print('x is: %s' % x)

In[]: y = 20

In[]: print('y is: %s' % y)

In[]: z = x+y

In[]: print('z is: %s' % z)

此笔记本可以随时运行。希望对您有所帮助。