gpt4 book ai didi

jupyter - Jupyter 笔记本的更好命名约定

转载 作者:行者123 更新时间:2023-12-02 10:01:30 28 4
gpt4 key购买 nike

命名 Jupyter Notebook 时,如果使用空格,即

This is my notebook.ipynb

然后,当使用网络浏览器打开时,它的渲染效果非常好。然而,空格在命令行环境中是有害的。但如果相反:

This_is_my_notebook.ipynb

This-is-my-notebook.ipynb

那么呈现的标题看起来并不那么好。对于替代约定但看起来仍然不错的任何建议?

最佳答案

这实际上取决于您的个人喜好和用例。这是我使用的方法:

我的方法

[#]_[2-4 word description]_[DS-initials]_[ISO 8601 date].ipynb

例如

- jupyter-notebooks
+ 1_exploratory_analysis_ag_2019-02-16.ipynb
+ 1_exploratory_analysis_jw_2019-02-19.ipynb
+ 1_exploratory_analysis.ipynb
+ 1_exploratory_analysis.py
+ 1_exploratory_analysis.html
+ 2_topic_modeling_ag_2019-02-20.ipynb
+ 2_topic_modeling.ipynb
+ 2_topic_modeling.py
+ 2_topic_modeling.html
+ dev_2019-02-15.ipynb
+ dev_2019-02-18.ipynb
+ dev.ipynb
+ dev.py
+ dev.html
  • 这里,我将所有笔记本放在名为 jupyter-notebooks 的文件夹中。文件和脚本输出通常位于此文件夹之外。

  • 如果适用,笔记本按逻辑顺序编号,例如首次创建日期。在许多情况下,对文件进行编号是没有意义的(例如 this repo of mine )。

  • 笔记本的版本带有时间戳和(可选)最新作者的姓名首字母。这可以通过保存后 Hook 自动完成(见下文)。

  • 笔记本的无时间戳版本有 .py.html 版本。通过将 .py 文件提交到 git,您可以获得版本控制的一些好处。这些文件也可以使用保存后 Hook 生成。

  • 其他开发工作可以放入 dev... 文件中。

我设置了一个保存后 Hook 来自动执行此操作。在我的配置文件(~/.jupyter/jupyter_notebook_config.py)中,我有:

import os
from subprocess import check_call
import glob
import datetime
import re

def timestamped_file(fname):
return bool(re.match('.*\d{4}-\d{2}-\d{2}\.ipynb', fname))

def post_save(model, os_path, contents_manager):
if model['type'] != 'notebook':
return # only do this for notebooks

# Post-save hook for converting notebooks to .py scripts
d, fname = os.path.split(os_path)
if not timestamped_file(fname):
check_call(['jupyter', 'nbconvert', '--to', 'script', fname], cwd=d)
check_call(['jupyter', 'nbconvert', '--to', 'html', fname], cwd=d)

# Post-save hook for saving datestamped versions of the notebook
notebooks = glob.glob('*.ipynb') + glob.glob('jupyter-notebooks/*.ipynb')
if notebooks:
latest_mod_file = max(notebooks, key=os.path.getctime)
# Don't do this for datestamped notebooks
if not timestamped_file(latest_mod_file):
date = datetime.datetime.now().strftime('%Y-%m-%d')
fname_timestamped = '{}_{}.ipynb'.format(os.path.splitext(latest_mod_file)[0], date)
check_call(['cp', latest_mod_file, fname_timestamped])


c.FileContentsManager.post_save_hook = post_save

如果保存无时间戳的文件,则会自动转换为 .py.html,并制作带时间戳的版本。

另一种方法

我的大会深受 this blog post 的启发。 。它们描述了我几年前开始使用的约定,然后采用了自己的变体。

以下是它们包含的示例:

- develop
+ [ISO 8601 date]-[DS-initials]-[2-4 word description].ipynb
+ 2015-06-28-jw-initial-data-clean.html
+ 2015-06-28-jw-initial-data-clean.ipynb
+ 2015-06-28-jw-initial-data-clean.py
+ 2015-07-02-jw-coal-productivity-factors.html
+ 2015-07-02-jw-coal-productivity-factors.ipynb
+ 2015-07-02-jw-coal-productivity-factors.py
- deliver
+ Coal-mine-productivity.ipynb
+ Coal-mine-productivity.html
+ Coal-mine-productivity.py

如您所见,开发和交付笔记本有单独的文件夹(和命名约定)。

关于jupyter - Jupyter 笔记本的更好命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38305217/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com