我不知道有什么方法可以阻止它被保存到脚本中,但是您可以(1)添加一个测试以确保魔法只在 ipython 中执行,以及(2)将基本魔法语法转换为普通python可以接受
magic_cmds = """%cd ~/
%load_ext autosave
%autosave 30
"""
if in_ipython():
for magic_cmd in magic_cmds.splitlines() :
get_ipython().magic(magic_cmd[1:])
这适用于 ipython 和 python,除了 python 显然不执行命令。请注意,如果您%
从字符串中删除符号,则应[1:]
从最后一行中删除。
就个人而言,我更喜欢以下版本,因为它会在in_ipython
未定义时捕获异常,尽管您当然可以try
以相同的方式将 a 添加到上面。
try :
if(__IPYTHON__) :
get_ipython().magic(u'cd ~/')
get_ipython().magic(u'load_ext autosave')
get_ipython().magic(u'autosave 30')
except NameError :
pass
编辑
细胞魔法同样可以包括在内。例如,翻译一个 ipython 单元格
%%R -o x
x <- c(1,2,3)
你会写
get_ipython().run_cell_magic(u'R', u'-o x', u'x <- c(1,2,3)')
除了内置帮助文本之外,我找不到有关此命令的更多信息,但我认为这些参数是不言自明的。当然,通过在字符串中插入换行符('\n'),也可以在第三个参数中使用多行输入。
更一般地说,如果你想翻译一些东西,只需将它写在笔记本上,然后单击File
-> Download as...
-> Python (.py)
,然后查看你得到的脚本。