Notebook 파일 형식

Jmnote (토론 | 기여)님의 2024년 7월 2일 (화) 00:09 판 (새 문서: ==개요== 분류: jupyter ;The Notebook file format ;Notebook 파일 형식 https://nbformat.readthedocs.io/en/latest/format_description.html ---- 공식 Jupyter Notebook 형식...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

1 개요

The Notebook file format
Notebook 파일 형식

https://nbformat.readthedocs.io/en/latest/format_description.html


공식 Jupyter Notebook 형식은 이 JSON 스키마로 정의되며, Jupyter 도구는 이를 사용해 노트북을 검증합니다.

이 페이지에는 노트북 형식에 대한 사람이 읽을 수 있는 설명이 포함되어 있습니다.

Note

모든 메타데이터 필드는 선택사항입니다. 일부 메타데이터 필드의 타입과 값은 정의되어 있지만, 어떤 메타데이터 필드도 정의할 필요가 없습니다. 또한, 모든 메타데이터 필드는 무시될 수도 있습니다.

2 최상위 구조

최상위 수준에서, Jupyter 노트북은 몇 가지 키를 가진 딕셔너리입니다:

  • metadata (dict)
  • nbformat (int)
  • nbformat_minor (int)
  • cells (list)
{
    "metadata": {
        "kernel_info": {
            # kernel_info가 정의된 경우, name 필드는 필수입니다.
            "name": "커널의 이름"
        },
        "language_info": {
            # language_info가 정의된 경우, name 필드는 필수입니다.
            "name": "커널의 프로그래밍 언어",
            "version": "언어의 버전",
            "codemirror_mode": "사용할 codemirror 모드의 이름 [선택 사항]",
        },
    },
    "nbformat": 4,
    "nbformat_minor": 0,
    "cells": [
        #  딕셔너리의 리스트, 아래 참조
    ],
}

코드 입력 및 텍스트 출력과 같은 일부 필드는 특성상 여러 줄로 된 문자열입니다. 이러한 필드가 디스크에 기록될 때는 문자열 목록으로 기록될 수 있으며, 메모리에 다시 읽을 때는 로 결합(join)해야 합니다. 노트북 파일을 직접 다루려면, 여러 줄로 된 문자열 필드가 문자열이거나 문자열 목록일 수 있도록 허용해야 합니다. 프로그램 API(Python, Javascript)를 사용하여 노트북을 다룰 때는 항상 원래의 여러 줄 문자열로 다시 결합됩니다.

3 셀 타입

코드와 텍스트를 캡슐화하는 기본 셀 타입이 몇 가지 있습니다. 모든 셀은 다음과 같은 기본 구조를 갖습니다:

{
    "cell_type": "type",
    "metadata": {},
    "source": "single string or [list, of, strings]"
}

Note

디스크 상에서, 여러 줄 문자열은 리스트로 나눌 수 있습니다. nbformat Python API로 읽을 때, 이러한 여러 줄 문자열은 항상 하나의 문자열이 됩니다.

3.1 마크다운 셀

마크다운 셀은 본문 텍스트에 사용되며, GitHub향 마크다운으로 정의되고 marked에서 구현된 마크다운을 포함합니다.

{
    "cell_type": "markdown",
    "metadata": {},
    "source": "[multi-line *markdown*]"
}

Warning

nbformat 버전 4.0에서 변경됨

헤딩 셀은 마크다운의 간단한 헤딩으로 대체되었습니다.

3.2 코드 셀

코드 셀은 Jupyter 노트북의 주요 콘텐츠입니다. 이 셀은 문서와 연결된 커널의 언어로 작성된 소스코드를 포함하며, 그 코드 실행과 연관된 출력 목록을 가지고 있습니다. 코드 셀은, 정수 또는 null이어야 하는 execution_count도 포함합니다.

{
    "cell_type": "code",
    "execution_count": 1,  # 정수 또는 null
    "metadata": {
        "collapsed": True,  #  출력이 접혔는지 여부
        "scrolled": False,  # true, false, "auto"  하나
    },
    "source": "[여러 줄의 코드]",
    "outputs": [
        {
            # 출력 dict 목록 (아래에 설명됨)
            "output_type": "stream",
            # ...
        }
    ],
}

Warning

nbformat 버전 4.0에서 변경됨

셀 타입 간의 일관성을 위해 inputsource로 이름이 변경되었습니다.

Warning

nbformat 버전 4.0에서 변경됨

prompt_numberexecution_count로 이름이 변경되었습니다.

3.3 코드 셀 출력

코드 셀은 다양한 출력(스트림 데이터 또는 리치 mime-타입 출력)을 가질 수 있습니다. 이러한 출력은 셀을 실행한 결과로 생성된 메시지에 해당합니다.

모든 출력에는 출력 타입을 정의하는 문자열인 output_type 필드가 있습니다.

3.3.1 스트림 출력

{
    "output_type": "stream",
    "name": "stdout",  # or stderr
    "text": "[multiline stream text]",
}

Warning

nbformat 버전 4.0에서 변경됨

stream 키가 스트림 메시지와 일치하도록 name으로 변경되었습니다.

3.3.2 display_data(디스플레이 데이터)

3.3.3 execute_result(실행 결과)

3.3.4 오류

3.4 Raw NBConvert 셀

3.5 셀 첨부파일

3.6 셀 ID

4 하위호환가능 변경사항

5 메타데이터

5.1 노트북 메타데이터

5.2 셀 메타데이터

5.3 출력 메타데이터

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}