首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ipython QtConsole %edit

Ipython QtConsole %edit
EN

Stack Overflow用户
提问于 2013-04-04 12:40:52
回答 2查看 872关注 0票数 0

在IPython中使用来自QtConsole的神奇函数%edit时,调用不会阻塞,也不会执行保存的代码。然而,它确实保存了一个临时文件...

我认为这是由于图形用户界面编辑器和不确定性导致的预期行为,以及无法与子进程(pyZMQ?)通信的原因。

你有什么建议作为混合%edit/%run魔法的最佳方式吗?

我不介意调用两个不同的命令(一个用于编辑,另一个在我保存并安全执行之后)。但是这些命令需要一种同步目标文件位置的方法,或者有人持久化存储,并且可能需要某种原始形式的可预测地生成文件名,以便您可以一次编辑多个文件,并在任意中执行。会话保持不是必须的。

写我自己的魔法会有什么好处吗?希望我们可以尽快%编辑宏,这将做得足够好,使其工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-05 19:52:54

你应该会做%edit filename.py%run filename.py。非阻塞行为是预期的,而IIRC则是由于技术原因。不是不可克服的,而是困难的。

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

希望我们能尽快%编辑宏,这将足够好地使它工作。

对于这一点,PR也是受欢迎的。我猜作为一种变通方法/选项,你可以通过%load macro将宏放在输入n+1上,编辑并重新定义它,这可能是一个很好的单元格魔术%%macro macroname的扩展

票数 1
EN

Stack Overflow用户

发布于 2013-04-09 16:29:36

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

代码语言:javascript
复制
%edit 1-5

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

我在Stdout上看到了print语句,但对于QtConsole AFAIK是不可见的。也许可以重定向stdout以捕捉该行,但如果您使用stdout执行其他操作,则无论如何这可能不是一个选择。

如果我可以检索刚刚创建的完整路径名,这将是小菜一碟。把它放在一些魔法知道怎么找到它的地方。然后,在准备就绪时发出一个后续命令,将名称从堆栈中弹出,将其加载到宏中,然后运行。这一切只需要2个输入命令,不需要记住任何名字(除非你想再次找到并使用那个宏,但只需要1次拍摄……)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15802651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档