IPython 笔记本:计算笔记本中的单元格数
IPython Notebook: Count number of cells in notebook
回答 Stack Overflow 问题,我使用相同的 ipython 笔记本,这样可以更轻松地搜索以前给出的答案。
笔记本开始变慢了。我的问题是:如何计算笔记本中的单元格数量?
- 我建议您不要对所有内容都使用同一个 ipython 笔记本。如果使用多个笔记本会导致重复代码,您应该能够将通用功能分解到您的笔记本可以导入的实际 python 模块中。
- 笔记本只是一个json文件,如果你把文件当作json来读,就很容易了。
例如:
import json
document = json.load(open(filepath,'r'))
for worksheet in document['worksheets']:
print len(worksheet['cells'])
您可以通过以下方式从命令行执行笔记本:
jupyter nbconvert --ExecutePreprocessor.allow_errors=True --to notebook --execute jupyter_notebook.ipynb
其中:jupyter_notebook.ipynb
应替换为您的 filename.ipynb
。
使用allow_errors=True
,无论执行过程中遇到什么错误,notebook 都会执行到最后。输出笔记本将包含引发异常的所有单元格的堆栈跟踪和错误消息。
实际上不需要解析json。只需将其作为文本阅读并计算实例数,例如 "cell type":
with open(fname, 'r') as f:
counter = 0
for line in f:
if '"cell_type":' in line:
counter += 1
或者,甚至更简单,只需在文本编辑器中打开您的 .ipynb 笔记本,然后突出显示相同的文本位并通过按 ctrl+F(或用于搜索的任何绑定)查看计数).
如果任何单元格有降价,而你想避免这些,你也可以在 "cell_type": "code",
上搜索。
尽管正如其他人所说,您最好不要以这种方式存储您的代码。或者至少,我想您可以将其存储在将来更容易访问的方式中,如果您需要它以供参考。
python -c "import sys, json; print(len(json.load(open(sys.argv[1],'r'))['cells']))" <notebook_filename.ipynb>
基于.
的一行
回答 Stack Overflow 问题,我使用相同的 ipython 笔记本,这样可以更轻松地搜索以前给出的答案。
笔记本开始变慢了。我的问题是:如何计算笔记本中的单元格数量?
- 我建议您不要对所有内容都使用同一个 ipython 笔记本。如果使用多个笔记本会导致重复代码,您应该能够将通用功能分解到您的笔记本可以导入的实际 python 模块中。
- 笔记本只是一个json文件,如果你把文件当作json来读,就很容易了。
例如:
import json
document = json.load(open(filepath,'r'))
for worksheet in document['worksheets']:
print len(worksheet['cells'])
您可以通过以下方式从命令行执行笔记本:
jupyter nbconvert --ExecutePreprocessor.allow_errors=True --to notebook --execute jupyter_notebook.ipynb
其中:jupyter_notebook.ipynb
应替换为您的 filename.ipynb
。
使用allow_errors=True
,无论执行过程中遇到什么错误,notebook 都会执行到最后。输出笔记本将包含引发异常的所有单元格的堆栈跟踪和错误消息。
实际上不需要解析json。只需将其作为文本阅读并计算实例数,例如 "cell type":
with open(fname, 'r') as f:
counter = 0
for line in f:
if '"cell_type":' in line:
counter += 1
或者,甚至更简单,只需在文本编辑器中打开您的 .ipynb 笔记本,然后突出显示相同的文本位并通过按 ctrl+F(或用于搜索的任何绑定)查看计数).
如果任何单元格有降价,而你想避免这些,你也可以在 "cell_type": "code",
上搜索。
尽管正如其他人所说,您最好不要以这种方式存储您的代码。或者至少,我想您可以将其存储在将来更容易访问的方式中,如果您需要它以供参考。
python -c "import sys, json; print(len(json.load(open(sys.argv[1],'r'))['cells']))" <notebook_filename.ipynb>
基于