ipython - insertar - tablas en jupyter notebook
¿Cómo convierto un cuaderno de IPython en un archivo de Python a través de la línea de comandos? (8)
@ Última línea de código de Spawnrider,
fh.writelines(source.encode(''utf-8''))
da ''TypeError: write () El argumento debe ser str, no int''
fh.writelines(source)
funciona bien
Estoy buscando usar los archivos * .ipynb como fuente de verdad y "compilarlos" programáticamente en archivos .py para trabajos / tareas programados.
La única forma en que entiendo esto es a través de la GUI. ¿Hay alguna manera de hacerlo a través de la línea de comandos?
Aquí hay una manera rápida y sucia de extraer el código de V3 o V4 ipynb sin usar ipython. No verifica tipos de células, etc.
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()
Para convertir todos los archivos de formato * .ipynb en el directorio actual en scripts de Python recursivamente:
for i in *.ipynb **/*.ipynb; do
echo "$i"
jupyter nbconvert "$i" "$i"
done
Puedes hacer esto desde la API de 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)
Si desea convertir todos los archivos *.ipynb
del directorio actual al script de python, puede ejecutar el comando de la siguiente manera:
jupyter nbconvert --to script *.ipynb
Si no desea generar un script de Python cada vez que lo guarda, o si no desea reiniciar el kernel de IPython:
En la línea de comando , puede usar nbconvert
:
$ jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb
¡Como un truco, incluso puedes llamar al comando anterior en un cuaderno IPython por pre-pendiente !
(utilizado para cualquier argumento de línea de comando). Dentro de un cuaderno:
!jupyter nbconvert --to script config_template.ipynb
Antes de que se added --to script
, la opción era --to python
o --to=python
, pero se renamed en el movimiento hacia un sistema de computadora portátil independiente del idioma.
Siguiendo el ejemplo anterior pero con la nueva versión de 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''))
Inicie el notebook con --script
flag guardará el archivo .py
junto con .ipynb
cada vez que lo guarde. Eche un vistazo a github/ipython/nbconvert que actualmente se está fusionando con IPython, por lo que no espere que el documento sea preciso y nbconvert funcione sin necesidad de trabajar un poco. (./nbconvert <format> <file.ipynb>) al momento de escribir esto, <format> en [ python , latex, markdown, full_html, ...])
También puede (como ipynb es json), cargarlo, recorrerlo y evaluar la celda de código en el espacio de nombres actual. Encontrará ejemplos aquí y allá en Internet o wiki de IPython en github.
Esta respuesta es demasiado antigua. Vea la respuesta de @williampli a continuación.