python - IPython 运行魔术 : How create an alias for "run -i"?

标签 python ipython ipython-magic

我正在编写一个 python 用户界面来控制实验室中的各种仪器。如果脚本不是交互式运行,与仪器的连接会在脚本结束时丢失,这可能非常糟糕。我想帮助用户“记住”以交互方式运行脚本。

我正在考虑两种可能的方法。首先,如标题中所述,我可以为 run -i 创建一个别名:

%alias_magic lab_run run -i

但这会返回一个错误:

UsageError: unrecognized arguments: -i 

有办法解决这个问题吗?

或者,我可以检测脚本内部是否传递了 -i 标志,如果没有传递则引发错误。但是,它没有出现在 sys.argv 列表中:

In [1]: import sys
In [2]: run -i test.py random args
['test.py', 'random', 'args']

我不能使用 ipy 文件,因为我需要读取 %run 标志,正如我之前的问题中所解释的: How to add a custom flag to IPython's magic commands? (.ipy files)

有人看到这个问题的解决方案吗?

最佳答案

你可以定义你自己的魔法函数并在其中使用%run -i:

from IPython.core.magic import register_line_magic

@register_line_magic
def r(line):
    get_ipython().magic('run -i ' + line)

del r

编辑

正如 hpaulj 指出的那样,magic 已被弃用。这里有一个新的版本 run_line_magic:

from IPython.core.magic import register_line_magic

@register_line_magic
def r(line):
    get_ipython().run_line_magic('run', ' -i ' + line)

del r
Now:

%r

做同样的事:

%run -i

关于python - IPython 运行魔术 : How create an alias for "run -i"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277669/

相关文章:

ipython - 如何在 Google Colab 的 ipython 上运行 shell 脚本文件

python - Mac OSX 魔术函数 %hist 未找到

ipython - 在 ipython 中使用魔法 %paste 时,如何让它只粘贴复制的代码,而不是粘贴和执行,以便可以对其进行编辑

python - 如何将 %time 的输出发送到 Jupyter/IPython Notebook 中的文件?

python - 在具有多个拆分器的python中拆分字符串

python - 如何使用 Pandas 对与给定条件匹配的列中的值求和?

jupyter-notebook - Jupyter 中的非阻塞单元执行

python - 请帮助: IPython for Emacs on Windows crashes

python - 如何在 Tensorflow 中为预取数据集绘制混淆矩阵

python - 配置 Python 解释器,以便在一个命令失败时停止执行一系列命令