как открыть файл jupyter для ноутбука с помощью pc charmer [duplicate]

input() (Python 3) и raw_input() (Python 2) всегда возвращают строки. Преобразуйте результат в целое число с помощью int().

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

Pro tip: в Python не нужны полуколоны.

126
задан Cristian Ciupitu 17 July 2014 в 00:24
поделиться

9 ответов

Начальный блокнот с флагом --script сохранит файл .py рядом с .ipynb при каждом сохранении. Посмотрите на github / ipython / nbconvert , который в настоящее время сливается с самим IPython, поэтому не ожидайте точности документа и nbconvert, чтобы работать из коробки, не работая немного. (./nbconvert & lt; format & gt; & lt; file.ipynb & gt;) во время этой записи, & lt; format & gt; в [python, latex, markdown, full_html, ...])

Вы также можете (как ipynb is json), загрузить его, пропустить его и eval кодеку в текущем пространстве имен. Вы найдете пример здесь и там в Интернете или IPython wiki на github.

Этот ответ слишком стар, см. Ниже ответ @williampli.

35
ответ дан nouveau 22 August 2018 в 16:03
поделиться

@ Последняя строка кода Spawnrider,

fh.writelines(source.encode('utf-8'))

дает 'TypeError: write () аргумент должен быть str, а не int'

fh.writelines(source) 

работает.

2
ответ дан BarryC 22 August 2018 в 16:03
поделиться

Если вы хотите преобразовать все *.ipynb файлы из текущего каталога в сценарий python, вы можете запустить команду следующим образом:

jupyter nbconvert --to script *.ipynb
6
ответ дан Daolagajao 22 August 2018 в 16:03
поделиться

Для преобразования всех файлов формата * .ipynb в текущий каталог в сценарии python рекурсивно:

for i in *.ipynb **/*.ipynb; do 
    echo "$i"
    jupyter nbconvert  "$i" "$i"
done
2
ответ дан Don Smythe 22 August 2018 в 16:03
поделиться
  • 1
    Мне пришлось добавить аргумент --to script, чтобы избежать вывода HTML по умолчанию в Jupiter 4.4.0. – trojjer 21 November 2017 в 14:51

Если вы не хотите выводить скрипт Python при каждом сохранении или не хотите перезапускать ядро ​​IPython:

В командной строке вы можете использовать nbconvert :

$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb

Как бит взлома, вы можете даже вызвать приведенную выше команду в записной книжке IPython с предварительным ожиданием ! ( используется для любого аргумента командной строки). В записной книжке:

!jupyter nbconvert --to script config_template.ipynb

До --to script добавлено , опция была --to python или --to=python, но она была переименована в движении к языковой системе с автономным ноутбуком.

210
ответ дан Matt 22 August 2018 в 16:03
поделиться
  • 1
    Если вы хотите, чтобы каждый из них сохранялся, в jupyter вы можете запускать nbconvert с помощью до или после перехвата: ContentsManager.pre_save_hook abd FileContentsManager.post_save_hook. Вы добавили бы пост-save hook jupyter nbconvert --to script [notebook] – jaimedash 3 May 2016 в 16:35
  • 2
    Есть ли способ сделать обратный i.e конвертировать из сценария python в ноутбук. Ибо, например, некоторые специализированные docstrings, которые анализируются в ячейках? – Sujen Shah 17 January 2017 в 18:40
  • 3
    конвертировать все записные книжки в папку jupyter nbconvert --to script /path/to/notebooks/*.ipynb – openwonk 22 July 2017 в 00:00
  • 4
    Кто-нибудь знает, как предоставить опции TemplateExporter для nbconvert? Я использую !jupyter nbconvert --to python 'jupi_demo.ipynb' --stdout --TemplateExporter.exclude_markdown=True на Jupyter 4.1.0, но он жалуется Config option exclude_markdown not recognized by PythonExporter. – Some Noob Student 20 September 2017 в 01:42
  • 5
    Спасибо, это работает !, но что, если я не хочу использовать материал типа # In[ ]: в сценарии, я хочу, чтобы он был чистым. Есть ли способ сделать это? – Rishabh Agrahari 31 January 2018 в 11:48
  • 6
    – MichaelChirico 12 September 2018 в 07:34

Следуя предыдущему примеру, но с новой версией nbformat lib:

import nbformat
from nbconvert import PythonExporter

def convertNotebook(notebookPath, modulePath):

  with open(notebookPath) as fh:
    nb = nbformat.reads(fh.read(), nbformat.NO_CONVERT)

  exporter = PythonExporter()
  source, meta = exporter.from_notebook_node(nb)

  with open(modulePath, 'w+') as fh:
    fh.writelines(source.encode('utf-8'))
6
ответ дан Spawnrider 22 August 2018 в 16:03
поделиться

Вот быстрый и грязный способ извлечь код из V3 или V4 ipynb без использования ipython. Он не проверяет типы ячеек и т. Д.

import sys,json

f = open(sys.argv[1], 'r') #input.ipynb
j = json.load(f)
of = open(sys.argv[2], 'w') #output.py
if j["nbformat"] >=4:
        for i,cell in enumerate(j["cells"]):
                of.write("#cell "+str(i)+"\n")
                for line in cell["source"]:
                        of.write(line)
                of.write('\n\n')
else:
        for i,cell in enumerate(j["worksheets"][0]["cells"]):
                of.write("#cell "+str(i)+"\n")
                for line in cell["input"]:
                        of.write(line)
                of.write('\n\n')

of.close()
9
ответ дан Valentas 22 August 2018 в 16:03
поделиться
  • 1
    Лучший ответ, если вы не хотите устанавливать какие-либо инструменты Jupyter. – dacracot 3 October 2016 в 14:38

Вы можете сделать это из API IPython.

from IPython.nbformat import current as nbformat
from IPython.nbconvert import PythonExporter

filepath = 'path/to/my_notebook.ipynb'
export_path = 'path/to/my_notebook.py'

with open(filepath) as fh:
    nb = nbformat.reads_json(fh.read())

exporter = PythonExporter()

# source is a tuple of python source code
# meta contains metadata
source, meta = exporter.from_notebook_node(nb)

with open(export_path, 'w+') as fh:
    fh.writelines(source)
3
ответ дан wwwslinger 22 August 2018 в 16:03
поделиться
0
ответ дан Jiren Jin 5 November 2018 в 13:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: