繁体   English   中英

逐行将.py flie导入Jupyter Notebook

[英]Import .py flie into Jupyter Notebook line by line

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

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

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

我怎样才能做到这一点?

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

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

您可以使用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)

该笔记本可以随时运行。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM