2016-08-12 6 views
3

Ответы на вопросы Stack Overflow, я использую тот же самый ipython-ноутбук, который упрощает поиск ранее заданных ответов.IPython Notebook: подсчитайте количество ячеек в записной книжке

Ноутбук начинает замедляться. У меня есть вопрос: как подсчитать количество ячеек в записной книжке?

+0

Вы можете попробовать ядро> перезагрузить и запустить все. Затем прокрутите до последней ячейки и посмотрите, что # находится в In [#] – Sam

+0

@Sam, которая будет работать, если все ячейки имеют действительный код. Если есть ошибка где-нибудь, запуск останавливается ... если вы являетесь пользователем ноутбука, его нелегкие ноутбуки с разделением, которые я нашел. – Merlin

+0

Формат ноутбука - это файл JSON. Разберите его, затем подсчитайте правильную часть структуры json. – nitind

ответ

5
  1. Я рекомендую вам не использовать один и тот же ipython-ноутбук для всего. Если использование нескольких ноутбуков приведет к повторному коду, вы сможете учесть общую функциональность в реальных модулях python, которые могут импортировать ваши ноутбуки.
  2. ноутбук - это только файл json, если вы читаете файл как json, вы можете сделать это легко.

Например:

import json  
document = json.load(open(filepath,'r')) 
for worksheet in document['worksheets']: 
    print len(worksheet['cells'])  
+1

Это со старой версией формата ноутбука; текущая версия покончила с «рабочими листами». Если вы используете библиотеку [nbformat library] (http://nbformat.readthedocs.io/en/latest/api.html), она автоматически преобразует ноутбук в указанную версию формата при загрузке. –

+0

Спасибо, не знал этого. – exp1orer

1

Вы могли бы выполнить свой ноутбук из командной строки:

jupyter nbconvert --ExecutePreprocessor.allow_errors=True --to notebook --execute jupyter_notebook.ipynb 

где: jupyter_notebook.ipynb должен быть заменен на filename.ipynb.

С allow_errors=True ноутбук выполнен до конца, независимо от ошибки, возникшей во время выполнения. Выходной ноутбук будет содержать трассировки стека и сообщения об ошибках для всех ячеек, занимающих исключения.

+0

Поскольку это работает за пределами браузера, есть возможность найти выходную память - не для этого проекта, а для другого. В браузере я могу использовать память для использования памяти. – Merlin

+0

Кстати, вы также можете запустить его в своем браузере через интерфейс API. <* Refer: * [Docs] (http: //nbconvert.readthedocs.-й/о/последние/execute_api.html # исполняющих-ноутбуки, используя-The-питон-апи-интерфейс)>. Я бы порекомендовал вам более внимательно рассмотреть «traitsts'arguments, переданные« ExecutePreprocessor », которые в основном имеют различные настраиваемые параметры, такие как тайм-аут, поддержка версий и т. Д. –

3

На самом деле нет необходимости разбирать json. Просто прочитайте его как текст и сосчитать случаи, например, «тип клеток»:

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", тоже.

Хотя, как говорили другие, вам лучше не хранить свой код таким образом. Или, по крайней мере, я полагаю, вы можете сохранить его таким образом, чтобы в будущем было намного легче получить доступ, если вы хотите получить его для справки.

+0

смешно Я сделал это до того, как вернусь к SO. [794] Это действительно не проблема, так же, как долго я сохраняю, закрываю, завершаю и снова открываю. Это очищает память. Пока код и вывод остаются. – Merlin

 Смежные вопросы

  • Нет связанных вопросов^_^