SPSS+AMOS数据分析案例教程-关于中介模
SPSS视频教程内容目录和跳转链接
SPSS+AMOS数据分析案例教程-关于中介模
SPSS视频教程内容目录和跳转链接
R语言快速入门视频教程
Python智联招聘数据分析
LCA潜在类别分析和Mplus应用
Amos结构方程模型数据分析入门教程
倒U关系回归分析中介效应和调节效应分析SPSS视频教程

jupyter notebook 扩展开发之 文件保存钩子

在B站@mlln-cn, 我就能回答你的问题奥!

文章目录
  1. 1. 文件保存钩子
  2. 2. 例子
  3. 3. jupyter notebook 扩展开发系列:

这是jupyter notebook 插件开发的系列文档之一, 文章最末尾列出了这个系列的所有博客连接.

文件保存钩子

您可以配置保存文件时运行的函数。有两个可用的钩子:

  • ContentsManager.pre_save_hook 作用在API保存路径和保存内容上。这可以用于剥离输出等人们不喜欢添加到VCS噪声的内容。
  • FileContentsManager.post_save_hook在没有内容的文件系统路径和模型上运行。例如,这可以用于在每次保存后提交更改。

它们都用关键字参数调用:

1
2
pre_save_hook(model=model, path=path, contents_manager=cm)
post_save_hook(model=model, os_path=os_path, contents_manager=cm)

例子

这些都可以添加到jupyter_notebook_config.py

剥离输出的预保存钩子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def scrub_output_pre_save(model, **kwargs):
"""scrub output before saving notebooks"""
# only run on notebooks
if model['type'] != 'notebook':
return
# only run on nbformat v4
if model['content']['nbformat'] != 4:
return

for cell in model['content']['cells']:
if cell['cell_type'] != 'code':
continue
cell['outputs'] = []
cell['execution_count'] = None

c.FileContentsManager.pre_save_hook = scrub_output_pre_save

一个保存后的挂钩,可以在笔记本保存时替换脚本(替换旧版本笔记本中的–script选项):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import io
import os
from notebook.utils import to_api_path

_script_exporter = None

def script_post_save(model, os_path, contents_manager, **kwargs):
"""convert notebooks to Python script after save with nbconvert

replaces `ipython notebook --script`
"""
from nbconvert.exporters.script import ScriptExporter

if model['type'] != 'notebook':
return

global _script_exporter

if _script_exporter is None:
_script_exporter = ScriptExporter(parent=contents_manager)

log = contents_manager.log

base, ext = os.path.splitext(os_path)
py_fname = base + '.py'
script, resources = _script_exporter.from_filename(os_path)
script_fname = base + resources.get('output_extension', '.txt')
log.info("Saving script /%s", to_api_path(script_fname, contents_manager.root_dir))

with io.open(script_fname, 'w', encoding='utf-8') as f:
f.write(script)

c.FileContentsManager.post_save_hook = script_post_save

这可能是一个简单的调用jupyter nbconvert --to script,但每次产生子进程都很慢。

jupyter notebook 扩展开发系列:

转载请注明出处:http://mlln.cn 或者 http://jupyter.cn

赞助

持续创造有价值的内容, 我需要你的帮助