最近,我把使用IPython笔记本作为工作流程的一部分。但是,我还没有成功地找到一种方法,将.py文件导入到打开的IPython笔记本的各个单元格中,以便对它们进行编辑、运行和保存。这能做到吗?

我在文档中找到了这一点,它告诉我如何将.py文件作为新的笔记本电脑导入,但这达不到我想要实现的目标。

任何建议都将不胜感激。


当前回答

我还没有找到一个满意的答案这个问题,即如何加载编辑,运行和保存。如果你想在git中显示增量变化,使用%%writefile或%save -f重写都不能很好地工作。它看起来像是删除了filename.py中的所有行,并添加了所有新行,即使您只编辑了一行。

其他回答

写/保存

% % writefile myfile.py

写入/保存单元格内容到myfile.py(使用-a来追加)。另一个别名:%%文件myfile.py

运行

% myfile.py运行

运行myfile.py并在当前单元格中输出结果

加载/导入

%负载myfile.py

加载“import”myfile.py到当前单元格中

更多的魔法和帮助

%lsmagic

列出所有其他酷的细胞魔法命令。

%命令名吗?

关于如何使用某个命令的帮助。即% ?

Note

除了单元格魔术命令,IPython notebook(现在是Jupyter notebook)非常酷,它允许您直接从单元格使用任何unix命令(这也相当于使用%%bash单元格魔术命令)。

要从单元格运行unix命令,只需在命令前面加上!马克。例如:

查看你的python版本 !python myfile.py运行myfile.py并在当前单元格中输出结果,就像%run一样(请参阅下面评论中的!python和%run之间的区别)。

另外,请参阅nbviewer以获得示例的进一步解释。

要在存在或不存在的文件中写入,请使用以下方法

%%writefile script2.py
print(4+5) 
print(5+5)

要向文件添加参数,请使用-a参数

%%writefile -a script2.py
print("hello")

当你加载文件时

%load script2.py
print(4+5)
print(5+5
print("hello")

我发现在ipython notebook中使用ls和cd来查找文件是令人满意的。然后在单元格中输入cat your_file_name,您将得到文件的内容,然后可以将其作为代码粘贴到单元格中。

在Ipython notebook“home”notebook表中拖放一个Python文件,单击上传。这将创建一个新的笔记本,其中只有一个单元格包含.py文件内容

从你最喜欢的编辑器复制/粘贴;)

编辑:从IPython 3(现在是Jupyter项目)开始,笔记本有一个文本编辑器,可以作为一个更方便的替代 加载/编辑/保存文本文件。

可以使用%load命令在笔记本单元格中加载文本文件。

如果你执行的单元格包含:

%load filename.py

py的内容将在下一个单元格中加载。您可以像往常一样编辑并执行它。

要将单元格内容保存回文件中,请在单元格的开头添加cell-magic %%writefile filename.py并运行它。注意,如果同名文件已经存在,它将被无声地覆盖。

要查看任何神奇命令的帮助,添加一个?:,如%load?或% % writefile ?。

有关魔术功能的一般帮助,请键入“%magic” 要获得可用的magic函数列表,请使用%lsmagic。对于描述 对于其中任何一个,键入%magic_name?,如。%的cd吗?。

请参见:来自IPython官方文档的Magic函数。