Existe-t-il une solution pour extraire tout le code du notebook? Par exemple, si je voulais générer un fichier source de mon notebook "source.py" contenant tout le code dans les cellules de code du notebook, est-ce possible?
Merci!
4 Réponses :
Il existe une solution "moche". Sélectionnez toutes les cellules de votre notebook. Fusionnez-les, puis copiez et collez tout le code.
Ingénieux, mais pas extensible à plusieurs ordinateurs portables.
Vous pouvez faire Fichier -> Télécharger en tant que -> Python (.py)
- cela devrait exporter toutes les cellules de code sous forme de fichier .py
unique
Le format du bloc-notes étant JSON, il est relativement facile d'extraire uniquement le contenu textuel des cellules de code uniquement. La tâche est encore plus facile lorsque vous utilisez l ' API Python pour travailler avec des fichiers notebook a >. Ce qui suit vous donnera le code sur la sortie standard. Vous pouvez le gérer par d'autres moyens de la même manière. Gardez à l'esprit que la source du code peut ne pas avoir de nouvelle ligne de fin. Les nœuds Notebook sont cependant un peu plus flexibles que les dictionnaires et autorisent l'attribut ( En répondant à cette question, j'ai pris conscience que la bibliothèque cells = notebook.cells
code_cells = [c for c in cells if c.cell_type == 'code']
for cell in code_cells:
print(cell.source)
.name code>) l'accès aux champs ainsi que l'indexation (
['name']
). En tant que personne ayant des difficultés à taper, je trouve préférable d'écrire from nbformat import read, NO_CONVERT
with open("Some Notebook.ipynb") as fp:
notebook = read(fp, NO_CONVERT)
cells = notebook['cells']
code_cells = [c for c in cells if c['cell_type'] == 'code']
for cell in code_cells:
print(cell['source'])
nbformat
avait été dégroupée, et peut donc être installé avec pip
sans le reste de Jupyter.
Vous pouvez utiliser l'outil de ligne de commande nbconvert pour convertir le fichier ipynb en divers autres formats. Le moyen le plus simple de le convertir en fichier .py est:
jq -j ' .cells | map( select(.cell_type == "code") | .source + ["\n\n"] ) | .[][] ' \ notebook.ipynb > source.py
Il ne produit que le code et les commentaires sans les invites de démarque, d'entrée et de sortie - uniquement du code. Il existe également l'option --stdout
.
Mais vous pouvez aussi simplement analyser le JSON du notebook en utilisant jq
jupyter nbconvert --to script notebook_name.ipynb