[ipython] 명령 줄을 통해 IPython Notebook을 Python 파일로 어떻게 변환합니까?

* .ipynb 파일을 진실의 원천으로 사용하고 계획된 작업 / 작업을 위해 프로그래밍 방식으로 .py 파일로 ‘컴파일’합니다.

내가 이것을 이해하는 유일한 방법은 GUI를 통하는 것입니다. 커맨드 라인을 통해 할 수있는 방법이 있습니까?



답변

저장할 때마다 Python 스크립트를 출력하지 않거나 IPython 커널을 다시 시작하지 않으려는 경우 :

커맨드 라인 , 당신은 사용할 수 있습니다 nbconvert:

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

약간의 해킹으로, IPython 노트북 에서 (명령 줄 인수에 사용 되는) 미리 대기 하여 위 명령 호출 할 수도 있습니다! . 노트북 내부 :

!jupyter nbconvert --to script config_template.ipynb

이전 --to script추가 된 옵션은 --to python또는 --to=python이지만 언어에 구애받지 않는 노트북 시스템으로 이동하면서 이름바뀌 었 습니다.


답변

*.ipynb현재 디렉토리의 모든 파일을 파이썬 스크립트 로 변환 하려면 다음과 같이 명령을 실행할 수 있습니다.

jupyter nbconvert --to script *.ipynb


답변

다음은 ipython을 사용하지 않고 V3 또는 V4 ipynb에서 코드를 추출하는 빠르고 더러운 방법입니다. 셀 유형 등을 확인하지 않습니다.

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()


답변

이전 예제를 따르지만 새로운 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'))


답변

IPython API에서이를 수행 할 수 있습니다.

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)


답변

Jupytext 는 이러한 변환을 위해 툴체인에 포함되어 있습니다. 노트북에서 스크립트로 변환 할 수있을뿐만 아니라 스크립트에서 노트북으로 다시 돌아갈 수도 있습니다. 심지어 그 노트북이 실행 된 형태로 생산되도록했습니다.

jupytext --to py notebook.ipynb                 # convert notebook.ipynb to a .py file
jupytext --to notebook notebook.py              # convert notebook.py to an .ipynb file with no outputs
jupytext --to notebook --execute notebook.py    # convert notebook.py to an .ipynb file and run it


답변

현재 디렉토리의 모든 * .ipynb 형식 파일을 파이썬 스크립트로 재귀 적으로 변환하려면 다음을 수행하십시오.

for i in *.ipynb **/*.ipynb; do
    echo "$i"
    jupyter nbconvert  "$i" "$i"
done