256

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

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

任何建议将不胜感激。

4

6 回答 6

339

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

可以使用魔法命令将文本文件加载到笔记本单元格中%load

如果您执行包含以下内容的单元格:

%load filename.py

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

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

要查看任何魔术命令的帮助,请添加?:like%load?%%writefile?.

有关魔术函数的一般帮助,请键入 "%magic" 要获得可用魔术函数的列表,请使用 %lsmagic。有关其中任何一个的描述,请键入 %magic_name?,例如 '%cd?'。

另请参阅:来自官方 IPython 文档的魔术函数。

于 2014-01-10T02:00:51.693 回答
135

写入/保存

%%writefile myfile.py

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

跑步

%run myfile.py

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

加载/导入

%load myfile.py

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

更多魔法和帮助

%lsmagic

  • 列出所有其他酷单元魔法命令。

%COMMAND-NAME?

  • 获取有关如何使用某个命令的帮助。IE%run?

笔记

除了单元格魔法命令之外,IPython 笔记本(现在的 Jupyter 笔记本)非常酷,它允许您直接从单元格中使用任何 unix 命令(这也相当于使用%%bash单元格魔法命令)。

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

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

此外,请参阅此 nbviewer以获取示例的进一步说明。希望这可以帮助。

于 2015-05-15T01:52:41.700 回答
9

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

否则从您最喜欢的编辑器中复制/粘贴;)

于 2014-01-10T01:22:24.150 回答
5

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

于 2014-01-10T02:00:35.007 回答
0

写入存在或不存在的文件中,请使用以下内容

%%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")
于 2022-02-01T12:31:45.017 回答
0

对于这个问题,我还没有找到令人满意的答案,即如何加载编辑、运行和保存。如果您想在 git 中显示增量更改,使用覆盖%%writefile或覆盖%save -f效果不佳。看起来您删除了所有行filename.py并添加了所有新行,即使您只编辑了 1 行。

于 2020-12-14T20:07:19.450 回答