如何加载/编辑/运行/保存文本文件(.py)到IPython笔记本细胞?

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

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

任何建议都将不胜感激。

384161 次浏览

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

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

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

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

可以使用神奇的%load命令将文本文件加载到笔记本单元格中。

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

%load filename.py

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

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

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

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

参见:Magic functions来自IPython官方文档。

写/保存

%%writefile myfile.py

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

运行

%run myfile.py

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

加载/导入

%load myfile.py

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

更多的魔法和帮助

%lsmagic

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

%COMMAND-NAME?

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

请注意

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

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

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

同样,参见这nbviewer以获得示例的进一步解释。

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

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

%%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")