Ipython QtConsole%编辑

时间:2013-04-04 04:40:52

标签: edit ipython qtconsole

当使用来自QtConsole的魔术函数%edit和IPython时,调用不会阻止,也不会执行保存的代码。但它会保存一个临时文件......

我认为这是由于GUI编辑器和不确定性而导致的行为,无论是什么原因导致无法与子进程通信(pyZMQ?)。

你认为混合%edit /%run magics的最佳方式是什么?

我不介意调用两个不同的命令(一个用于编辑,一个用于保存并且执行是安全的)。但是这些命令需要一种方法来同步这个目标文件位置,或者某个人来持久存储,并且可能需要一些粗略形式的可预测生成文件名,这样你就可以一次编辑多个文件,并且可以任意执行。会话持久性不是必须的。

写我自己的魔法会有什么好处吗?希望我们能够很快编辑宏,这样做可以很好地使其工作。

2 个答案:

答案 0 :(得分:1)

你应该能够%edit filename.py%run filename.py。由于技术原因,预期非阻塞行为和IIRC。不是不可克服的,但很难。

如果您愿意,您可以定义自己的魔法,欢迎改进。

  

希望我们能够尽快编辑宏,这样做可以很好地使其工作。

为此,PR也受到欢迎。我想作为一种解决方法/选项你可以%load macro将宏放在输入n + 1上,编辑它并重新定义它,这可能是一个很好的细胞魔法延伸%%macro macroname

答案 1 :(得分:0)

如果输入中有一些可执行代码(来自QtConsole),则可以输入

%edit 1-5

这将触发编辑器,创建临时文件(自动管理),并加载输入行。这已经足够了,现在如何实用地检索那个临时文件的名称?

我在Stdout上看到了print语句,但它对QtConsole AFAIK不可见。也许可以重定向stdout以捕获该行,但如果你用stdout做其他事情,那么这可能不是一个选项。

如果我可以检索刚刚创建的完整路径名,那么这将是蛋糕。将它存放在一些魔法师知道如何找到它的地方。然后在准备好后发出followup命令,从堆栈中弹出名称,将其加载到宏中,然后运行。所有这一切都有2个输入命令,没有要记住的名字(除非你想再次找到并使用那个宏,但对于1个镜头的东西......)

如何捕获或检索该临时文件的路径?