Snippets是Jupyter notebook Nbextensions中的一个拓展程序,用于实现代码复用,避免重复造轮子,非常方便。
我们可以将常用的代码生成snippet,以后使用时,只需点一点鼠标,即可完成,具体代码如下:
#生成snippet函数
def generate_snippets(name, code):
import json
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
snips = {
"name": name,
"code": code
}
fr = open(path, 'r', encoding='UTF-8')
mode = json.load(fr)
fr.close()
for i in range(0, len(mode['snippets'])):
if mode['snippets'][i]['name'] == name:
raise NameError('名称已存在')
break
mode['snippets'].append(snips)
jsObj = json.dumps(mode)
with open(path, "w") as fw:
fw.write(jsObj)
fw.close()
#删除snippet函数
def delete_snippets(name):
import json
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
fr = open(path, 'r', encoding='UTF-8')
mode = json.load(fr)
fr.close()
count=0
for i in range(0, len(mode['snippets'])):
if mode['snippets'][i]['name'] == name:
del mode['snippets'][i]
break
count+=1
if count==len(mode['snippets']):
raise NameError('不存在此片段')
jsObj = json.dumps(mode)
with open(path, "w") as fw:
fw.write(jsObj)
fw.close()
#请将代码粘贴于string内部
string="""
"""
s1=string.split('\n')
code=[i for i in s1 if i!='']
generate_snippets(name='',code=code)#生成
# delete_snippets(name='')#删除
具体操作如下:
(1)将需要复用的代码全选粘贴于string内部
(2)生成snippet:在函数generate_snippets写上名称即可
(3)删除snippet:在函数delete_snippets写上名称即可