最近,我开始在工作流程中使用IPython笔记本。然而,我一直没有成功地找到一种方法来将.py文件导入到打开的IPython笔记本的各个单元格中,以便可以编辑、运行和保存它们。这能做到吗?
我在文档中找到了这个,它告诉我如何将.py文件导入为新的笔记本,但这还不够我想要实现的。
如果有任何建议,将不胜感激。
最近,我开始在工作流程中使用IPython笔记本。然而,我一直没有成功地找到一种方法来将.py文件导入到打开的IPython笔记本的各个单元格中,以便可以编辑、运行和保存它们。这能做到吗?
我在文档中找到了这个,它告诉我如何将.py文件导入为新的笔记本,但这还不够我想要实现的。
如果有任何建议,将不胜感激。
编辑:从IPython 3(现在是Jupyter项目)开始,笔记本具有文本编辑器,可用作加载/编辑/保存文本文件的更方便的替代方法。
可以使用魔法命令%load
在笔记本单元格中加载文本文件。
如果您执行包含以下内容的单元格:
%load filename.py
filename.py
的内容将在下一个单元格中加载,您可以像平常一样编辑和执行它。
要将单元格内容保存回文件,请在单元格开头添加单元格魔法%%writefile filename.py
并运行它。请注意,如果已经存在同名文件,它将被静默覆盖。
要查看任何魔法命令的帮助,请添加?
,例如%load?
或%%writefile?
。
有关魔法函数的通用帮助,请键入“%magic” 要获取可用魔法函数列表,请使用%lsmagic。要获取其中任何一个的描述,请键入%m(魔法名称)?例如'%cd?'。
另请参阅:来自官方IPython文档的魔法函数。
%save -f
似乎是我正在寻找的方法。谢谢! - aaronsstack%loadpy
(取代了 %load
)。 - AlQuemist%load
是可以的。 %loadpy
(%load
的别名)已经具有一些灵活性,并且不需要 .py
扩展名了。因此,它被重命名为 %load
。您可以查看 %load
docstring 以获取更多信息。 - michaelipython
时,是否可以将%load myfile.py
作为启动参数运行? - gies0r%%writefile myfile.py
-a
表示追加)。另一个别名:%%file myfile.py
%run myfile.py
%load myfile.py
%lsmagic
%COMMAND-NAME?
%run?
除了单元格魔术命令外,IPython笔记本(现在是Jupyter笔记本)非常酷,它允许您直接从单元格中使用任何Unix命令(这也等同于使用%%bash
单元格魔术命令)。
要从单元格中运行Unix命令,只需在命令前加上!
标记。例如:
!python --version
查看您的Python版本!python myfile.py
运行myfile.py并在当前单元格中输出结果,就像%run
一样(请参见下面的注释中!python
和%run
之间的区别)。此外,请参见此nbviewer以获取更多解释和示例。
%run myfile.py
和!python myfile.py
略有不同。如果您使用前者,它将使用ipython内核执行,包括任何预加载配置。这是一个小问题,但我今天遇到了一个bug,这使得它对我产生了影响。 - Tristan Reid%run myfile.py
相当的操作,请使用%run myfile.ipy
。 - Wayne将Python文件拖放到Ipython笔记本电脑的“主页”笔记本电脑表中,然后单击上传。这将创建一个新的笔记本电脑,其中仅包含一个单元格,其中包含您的.py文件内容
否则,从您喜欢的编辑器中复制/粘贴 ;)
我发现在ipython笔记本中使用ls和cd来查找文件非常有效。然后在单元格中键入cat your_file_name,您将获得该文件的内容,您可以将其作为代码复制到单元格中。
!cat "file.txt"
- Enrique Pérez Herrero要写入已存在或不存在的文件,请使用以下方法
%%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")
我还没有找到一个令人满意的答案来回答这个问题,即如何加载、编辑、运行和保存。如果你想在 git 中显示增量更改,使用 %%writefile
或 %save -f
覆盖任何一个都不太好用。它看起来像你删除了 filename.py
中的所有行并添加了所有新行,即使你只是编辑了一行。