ipython notebook --script deprecated. How to replace with post save hook?

前端 未结 3 845
情话喂你
情话喂你 2020-12-08 22:17

I have been using \"ipython --script\" to automatically save a .py file for each ipython notebook so I can use it to import classes into other notebooks. But this recenty st

3条回答
  •  情深已故
    2020-12-08 23:06

    I just encountered a problem where I didn't have rights to restart my Jupyter instance, and so the post-save hook I wanted couldn't be applied.

    So, I extracted the key parts and could run this with python manual_post_save_hook.py:

    from io import open
    from re import sub
    from os.path import splitext
    from nbconvert.exporters.script import ScriptExporter
    
    for nb_path in ['notebook1.ipynb', 'notebook2.ipynb']:
        base, ext = splitext(nb_path)
        script, resources = ScriptExporter().from_filename(nb_path)
        # mine happen to all be in Python so I needn't bother with the full flexibility
        script_fname = base + '.py'
        with open(script_fname, 'w', encoding='utf-8') as f:
            # remove 'In [ ]' commented lines peppered about
            f.write(sub(r'[\n]{2}# In\[[0-9 ]+\]:\s+[\n]{2}', '\n', script))
    

    You can add your own bells and whistles as you would with the standard post save hook, and the config is the correct way to proceed; sharing this for others who might end up in a similar pinch where they can't get the config edits to go into action.

提交回复
热议问题