Jupyter notebook避免重复造轮子绝技之Snippets插件

使用场景

在日常程序的编写中,有很多重复的代码一直再重复,另外有时这类代码很难记忆,又必不可缺,每次使用都需要百度查找相关代码,在这里提供一种便利的方式,提高编写代码效率。

使用前提

  • 已有Jupyter botebook
  • 安装Jupyter notebook extensions 扩展插件
python -m pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user --skip-running-check  

选择Nbextensions,添加Snippets扩展程序。
在这里插入图片描述
由于Snippets扩展程序要添加重复的代码块必须写代码,那能不能写一次代码一劳永逸呢?不错还真有,真是奇淫巧计啊,哈哈哈。

添加增加轮子的功能

#创建删除轮子
import json
#重复代码名字
name="增加轮子(默认覆盖)"
#重复代码内容
information=\
'''
import json
#重复代码名字
name="解决中文无法显示"
#重复代码内容
information=\\
\'''

\'''
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
snips = {
    "name": name,
    "code": [
        information
    ]
}
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:
        del mode['snippets'][i]
        break
mode['snippets'].append(snips)
jsObj = json.dumps(mode)
with open(path, "w") as fw:
    fw.write(jsObj)
    fw.close()
'''
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
snips = {
    "name": name,
    "code": [
        information
    ]
}
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:
        del mode['snippets'][i]
        break
mode['snippets'].append(snips)
jsObj = json.dumps(mode)
with open(path, "w") as fw:
    fw.write(jsObj)
    fw.close()

添加删除轮子功能

#创建新增轮子
import json
#重复代码名字
name="删除轮子"
#重复代码内容
information=\
'''
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
#批量删除列表
del_list=[""]
def del_Snippets():
    fr = open(path, 'r', encoding='UTF-8')
    mode = json.load(fr)
    for index,i in enumerate(mode['snippets']):
        if i['name'] in del_list:
            print(f"正在删除{mode['snippets'][index]}")
            del mode['snippets'][index]
    jsObj = json.dumps(mode)
    with open(path, "w") as fw:
        fw.write(jsObj)
        fw.close()
        print("正在保存数据")
del_Snippets()
'''
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
snips = {
    "name": name,
    "code": [
        information
    ]
}
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:
        del mode['snippets'][i]
        break
mode['snippets'].append(snips)
jsObj = json.dumps(mode)
with open(path, "w") as fw:
    fw.write(jsObj)
    fw.close()

使用方法

增加轮子方法

在这里插入图片描述


import json
#重复代码名字
name="解决中文无法显示"
#重复代码内容
information=\
'''

'''
path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
snips = {
    "name": name,
    "code": [
        information
    ]
}
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:
        del mode['snippets'][i]
        break
mode['snippets'].append(snips)
jsObj = json.dumps(mode)
with open(path, "w") as fw:
    fw.write(jsObj)
    fw.close()

删除轮子方法

在这里插入图片描述

path = get_ipython().getoutput('jupyter --data-dir')
path = "".join([path[0], r"/nbextensions/snippets/snippets.json"])
#批量删除列表
del_list=[""]
def del_Snippets():
    fr = open(path, 'r', encoding='UTF-8')
    mode = json.load(fr)
    for index,i in enumerate(mode['snippets']):
        if i['name'] in del_list:
            print(f"正在删除{mode['snippets'][index]}")
            del mode['snippets'][index]
    jsObj = json.dumps(mode)
    with open(path, "w") as fw:
        fw.write(jsObj)
        fw.close()
        print("正在保存数据")
del_Snippets()

在这里插入图片描述
添加成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值