converteer json ipython notebook(.ipynb) naar .py-bestand

Hoe converteert u een IPython-notebookbestand (json met de extensie .ipynb) naar een gewone .py-module?


Antwoord 1, autoriteit 100%

Vanuit het notebookmenu kun je het bestand direct opslaan als een python-script. Ga naar de optie ‘Bestand’ van het menu, selecteer vervolgens ‘Downloaden als’ en daar zou je een optie ‘Python (.py)’ zien.

Een andere optie zou zijn om nbconvert te gebruiken vanaf de opdrachtregel:

jupyter nbconvert --to script 'my-notebook.ipynb'

Kijk hier.


Antwoord 2, autoriteit 24%

Volgens https://ipython.org/ipython-doc/3/ notebook/nbconvert.htmlje zoekt het nbconvert commando met de –to script optie.

ipython nbconvert notebook.ipynb --to script

Antwoord 3, autoriteit 15%

Kortom:deze opdrachtregeloptie converteert mynotebook.ipynbnaar python-code:

jupyter nbconvert mynotebook.ipynb --to python

opmerking:dit is een ander antwoord dan hierboven. ipythonis hernoemd naar jupyter. de oude naam van het uitvoerbare bestand (ipython) is verouderd.


Meer details:
De opdrachtregel jupyterheeft een argument nbconvertdat helpt bij het converteren van notebookbestanden (*.ipynb)naar verschillende andere indelingen.

Je zou het zelfs naar een van deze formaten kunnen converteren met hetzelfde commando maar met een andere --tooptie:

  • asciidoc
  • aangepast
  • html
  • latex. (Geweldig als je code in conferentie-/tijdschriften wilt plakken).
  • afwaardering
  • notebook
  • pdf
  • python
  • eerste
  • script
  • dia’s. (Hoho! Converteer naar dia’s voor eenvoudige presentatie 😊)

dezelfde opdracht jupyter nbconvert --to latex mynotebook.ipynb

Zie voor meer informatie jupyter nbconvert --help. Hier zijn uitgebreide mogelijkheden voor. Je zou zelfs de code eerst kunnen uitvoeren voordat je gaat converteren, verschillende opties op logniveau enz.


Antwoord 4, autoriteit 4%

wel eerst en vooral moet je dit pakket hieronder installeren:

sudo apt install ipython
jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb

twee optie is beschikbaar ofwel –to python of –to=python
de mijne was als volgt werkt prima:
jupyter nbconvert –to python while.ipynb

jupyter nbconvert --to python while.ipynb 

[NbConvertApp] Notebook while.ipynb converteren naar python
[NbConvertApp] Schrijft 758 bytes naar while.py

pip3 install ipython

als het niet werkt, probeer het dan via pip3.

pip3 install ipython

Antwoord 5, autoriteit 2%

Je kunt dat zeker bereiken met nbconvert door het volgende commando te gebruiken:

jupyter nbconvert --to python while.ipynb 

Als ik het echter persoonlijk heb gebruikt, zou ik het om verschillende redenen afraden:

  1. Het is één ding om te kunnen converteren naar eenvoudige Python-code en een ander om de juiste abstracties, klassentoegang en methoden te hebben ingesteld. Als het hele punt van het converteren van uw notebookcode naar Python een staat is waarin uw code en notebooks voor de lange termijn kunnen worden onderhouden, dan is nbconvert alleen niet voldoende. De enige manier om dat te doen is door handmatig door de codebase te gaan.
  2. Notebooks promoten inherent het schrijven van code die niet kan worden onderhouden (https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV-dkAIsUXP-AL4ffI/edit#slide=id.g3d7fe085e7_0_21). Het gebruik van nbconvert bovenop zou zomaar een pleister kunnen blijken te zijn. Specifieke voorbeelden van waar het niet-zo-onderhoudbare code promoot, zijn invoer die overal kan worden gespoten, hard gecodeerde paden zijn niet op één eenvoudige plaats te bekijken, klasse-abstracties zijn mogelijk niet aanwezig, enz.
  3. nbconvert combineert nog steeds uitvoeringscode en bibliotheekcode.
  4. Opmerkingen zijn nog steeds niet aanwezig (waarschijnlijk niet in het notitieboekje).
  5. Er is nog steeds een gebrek aan unit tests enz.

Dus om samen te vatten, er is geen goede manier om python-notebooks direct om te zetten naar onderhoudbare, robuuste, gemodulariseerde python-code, de enige manier is om handmatig een operatie uit te voeren.


Antwoord 6, autoriteit 2%

je kunt dit gebruiken om dat te doen:

pip install ipynb-py-convert

voer dit vervolgens uit op uw terminal om het .py-bestand naar .ipynb te converteren:

ipynb-py-convert Ex/abc.py Ex/abc.ipynb

om .ipynb-bestanden naar .py te converteren:

ipynb-py-convert Ex/abc.ipynb Ex/abc.py

Antwoord 7

Je kunt het volgende script gebruiken om jupyter-notebook naar Python-script te converteren, of de code direct bekijken.

Hiervoor schrijft u de volgende inhoud naar een bestand cat_ipynben vervolgens chmod +x cat_ipynb.

#!/usr/bin/env python
import sys
import json
for file in sys.argv[1:]:
    print('# file: %s' % file)
    print('# vi: filetype=python')
    print('')
    code = json.load(open(file))
    for cell in code['cells']:
        if cell['cell_type'] == 'code':
            print('# -------- code --------')
            for line in cell['source']:
                print(line, end='')
            print('\n')
        elif cell['cell_type'] == 'markdown':
            print('# -------- markdown --------')
            for line in cell['source']:
                print("#", line, end='')
            print('\n')

Dan kun je

. gebruiken

cat_ipynb your_notebook.ipynb > output.py

Of toon het direct met vi

cat_ipynb your_notebook.ipynb | view -


Antwoord 8

  1. Ga naar https://jupyter.org/
  2. klik op nbviewer
  3. Voer de locatie van uw bestand in en geef het weer.
  4. Klik op weergeven als code (weergegeven als < />)

Antwoord 9

Een manier om dat te doen is door uw script op Colab te uploaden en het in .py-indeling te downloaden van File -> Download .py


Antwoord 10

Jupytext zorgt voor een dergelijke conversie op de opdrachtregel, en is belangrijker nog een keer terug van het script naar een notebook (zelfs een uitgevoerd notitieblok). Zie hier .


Antwoord 11

Kopieer alle (” .Ipynb) -bestanden in de gewenste map en voer vervolgens uit:

import os    
desired_path = 'C:\\Users\\Docs\\Ipynb Covertor'
os.chdir(desired_path)
list_of_directory = os.listdir(desired_path)
for file in list_of_directory:
        os.system('ipython nbconvert --to script ' + str(file))

Antwoord 12

U kunt een .py-bestand uitvoeren in dezelfde map:

import json
files = ["my_first_file_name.ipynb", "my_second_file_name.ipynb"]
for file in files:
    code = json.load(open(file))
    py_file = open(f"{file}.py", "w+")
    for cell in code['cells']:
        if cell['cell_type'] == 'code':
            for line in cell['source']:
                py_file.write(line)
            py_file.write("\n")
        elif cell['cell_type'] == 'markdown':
            py_file.write("\n")
            for line in cell['source']:
                if line and line[0] == "#":
                    py_file.write(line)
            py_file.write("\n")
    py_file.close()

Ik herschrijf deze code van het antwoord van Syrtis Major.


Antwoord 13

Converteer de IPYNB DIR-bestanden naar. Py

import os
for fname in os.listdir():
    if fname.endswith('ipynb'):
        os.system(f'jupyter nbconvert {fname} --to python')

Other episodes