Hoe kan ik tekstbestanden (.py) in een IPython-notebookcel laden/bewerken/uitvoeren/opslaan?

Ik ben onlangs overgestapt op het gebruik van IPython-notebooks als onderdeel van mijn workflow. Ik ben er echter niet in geslaagd een manier te vinden om .py-bestanden te importeren in de afzonderlijke cellen van een open IPython-notebook, zodat ze kunnen worden bewerkt, uitgevoerd en opgeslagen. Kan dit?

Ik heb ditgevonden in de documentatie die me vertelt hoe ik .py-bestanden moet importeren als nieuwe notebooks, maar dit voldoet niet aan wat ik wil bereiken.

Alle suggesties worden zeer op prijs gesteld.


Antwoord 1, autoriteit 100%

BEWERKEN: vanaf IPython 3 (nu Jupyter-project), heeft de notebook een teksteditor die kan worden gebruikt als een handiger alternatief voor
tekstbestanden laden/bewerken/opslaan.

Een tekstbestand kan in een notebookcel worden geladen met het magische commando %load.

Als u een cel uitvoert met daarin:

%load filename.py

de inhoud van filename.pywordt in de volgende cel geladen. Je kunt het zoals gewoonlijk bewerken en uitvoeren.

Om de celinhoud weer in een bestand op te slaan, voegt u de celmagic %%writefile filename.pytoe aan het begin van de cel en voert u deze uit. Pas op dat als een bestand met dezelfde naam al bestaat het stil zal worden overschreven.

Om de hulp voor elk magisch commando te zien, voeg je een ?toe: zoals %load?of %%writefile?.

Voor algemene hulp bij magische functies typt u “%magic”
Gebruik %lsmagic voor een lijst van de beschikbare magische functies. Voor een beschrijving
van een van hen typt u %magic_name?, b.v. ‘%cd?’.

Zie ook: Magische functiesvan de officiële IPython-documenten.


Antwoord 2, autoriteit 40%

Schrijven/opslaan

%%writefile myfile.py

  • schrijf/bewaar celinhoud in myfile.py (gebruik -aom toe te voegen). Een andere alias: %%file myfile.py

Uitvoeren

%run myfile.py

  • voer mijnbestand.py uit en voer de resultaten uit in de huidige cel

Laden/importeren

%load myfile.py

  • laad “import” mijnbestand.py in de huidige cel

Voor meer magie en hulp

%lsmagic

  • maak een lijst van alle andere coole celmagische commando’s.

%COMMAND-NAME?

  • voor hulp bij het gebruik van een bepaald commando. d.w.z. %run?

Opmerking

Naast de celmagische commando’s, is de IPython-notebook (nu Jupyter-notebook) zo cool dat je elk Unix-commando rechtstreeks vanuit de cel kunt gebruiken (dit is ook gelijk aan het gebruik van de %%bashcelmagisch commando).

Als u een Unix-opdracht vanuit de cel wilt uitvoeren, laat u uw opdracht voorafgaan door het teken !. bijvoorbeeld:

  • !python --versionzie je python-versie
  • !python myfile.pyvoer mijnbestand.py uit en voer de resultaten uit in de huidige cel, net als %run(zie het verschil tussen !pythonen %runin de opmerkingen hieronder).

Zie ook dit nbviewervoor verdere uitleg met voorbeelden.
Ik hoop dat dit helpt.


Antwoord 3, autoriteit 3%

Sleep en zet een Python-bestand neer in de Ipython notebooks “home” notebooks-tabel, klik op uploaden. Hiermee wordt een nieuw notitieblok gemaakt met slechts één cel die uw .py-bestandsinhoud bevat

Anders kopiëren/plakken vanuit je favoriete editor 😉


Antwoord 4

Ik vond het bevredigend om ls en cd in ipython notebook te gebruiken om het bestand te vinden. Typ vervolgens cat your_file_name in de cel en je krijgt de inhoud van het bestand terug, die je vervolgens als code in de cel kunt plakken.


Antwoord 5

Ik heb geen bevredigend antwoord gevonden op deze vraag, d.w.z. hoe te laden, bewerken, uitvoeren en opslaan. Overschrijven met %%writefileof %save -fwerkt niet goed als je incrementele wijzigingen in git wilt tonen. Het lijkt erop dat u alle regels in filename.pyverwijdert en alle nieuwe regels toevoegt, ook al bewerkt u slechts 1 regel.


Antwoord 6

om in een bestand te schrijven dat bestaat of niet, gebruik het volgende

%%writefile script2.py
print(4+5) 
print(5+5)

gebruik -a argument om aan een bestand toe te voegen

%%writefile -a script2.py
print("hello")

wanneer u het bestand laadt

%load script2.py
print(4+5)
print(5+5
print("hello")

Other episodes