我有一个特殊的类来捕获和处理给定算法的日志。这看起来像这样
report = Report2File(logger,"./path")
report.start()
solveProblem()
report.stop()
del report
我想成为更懒惰的事件,只写
%%report "./path"
solveProblem()
首先容易创建这样的Magic Cell接缝
更新:
@magics_class
class MyMagics(Magics):
@cell_magic
def cmagic(self, line, cell):
"my cell magic"
self.before()
exec(cell)
self.after()
return line, cell
def before(self):
do stuff ...
def after(self):
do stuff ...
ip = get_ipython()
ip.register_magics(MyMagics)
但是我有两个问题:
this talk给了我2的答案。
而不是
ip = get_ipython()
ip.register_magics(MyMagics)
注册魔术的正确方法如下
def load_ipython_extension(ip):
ip.register_magics(MyMagics)
def unload_ipython_extension(ip):
pass
答案 0 :(得分:0)
您还需要使用@magics_class
(来自IPython.core.magic)装饰该类。
要传递参数,请查看@magic_arguments
文档以获取示例:它非常容易理解。