在ipython中加载python脚本作为ipython单元格

Loading python script in ipython as ipython cells

我们可以使用%run在ipython控制台(而不是笔记本)中执行python脚本。 但是,有没有办法可以运行脚本并让每行脚本加载并作为ipython输入的一个单元格执行。 对于例如 如果脚本是:

1
2
3
4
5
if a == b:
  print 2*a

if a == 2*b:
  print a

然后在ipython中,脚本必须加载(并执行),如下所示:

1
2
3
4
5
6
7
In [1]: if a == b:
   ...:     print 2*a
   ...:

In [2]: if a == 2*b:
   ...:     print a
   ...:

我不知道这是否可能,但如果是这样,它将非常有用,因为我可以加载脚本然后执行我想要执行的代码的任何部分。 后续问题是我们是否可以递归加载导入模块的源代码(如在调试器中踩)。 这样我们就可以在ipython内部进行开发和测试,而无需从头开始执行整个代码(因为ipython会保存每个单元的状态)。


你可以试试下面的东西,
!python filename.py

还有另一个选项,您可以使用复制将代码粘贴到ipython中
%cpaste,最后ctrl + d退出%cpaste
ipython中的%edit允许输入代码,并在退出编辑模式后保存在/tmp/ipython_edit_3xhsby0h/ipython_edit_*.py中,它执行上面文件中使用:q编写的行列表以退出编辑模式
要进入调试模式,您可以试试这个
python -m pdb filename.py


是的,我相信这个问题提供了答案。 总而言之,您希望使用magic命令%load

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

1
%load filename.py

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