[iPython Notebook] Altijd "[out x]" voor cel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
Ik heb beetje lastig te formuleren vraag over IPython Notebook. Het is best wel leuk! Ik gebruik het om iemand Python te leren, omdat je makkelijke tussendoor commentaar kan geven. Sorry, ik dwaal af.

Je hebt bij IPython Notebooks cellen, en code cellen hebben een "In" en een "Out" blok in zich. Als je in een "In" block een losse expressie zet zoals je in een REPL zou doen, dan krijg je in je "Out" block de string representatie, met links daarvan een indicator zoals "Out[4]" (cel 4)

Maar als je gewoon `print("foo")` doet in zo'n block, krijg je links van je "Out" block niet die Out[4] :( Dat is voor het overzicht wat minder leuk eerlijk gezegd.

Bijvoorbeeld cel 5 hier: http://nbviewer.ipython.o...ok/Trapezoid%20Rule.ipynb

Daar zie je niet links ervan een Out[5] staan ,maar gewoon de "plain text". Hier zie je Out blocks:
http://nbviewer.ipython.o...book/Basic%20Output.ipynb

Hoe kan ik die realiseren voor al mijn In blocks?

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

Ik gebruik zelf geen ipython notebook, maar ik denk dat het komt omdat print(...) geen waarde returnt maar alleen iets op stdout zet. Je zult de print(...) dus moeten vervangen door iets anders, wat de gewenste string returnt.

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


Acties:
  • 0 Henk 'm!

  • Gleighton
  • Registratie: November 2008
  • Niet online
In het voorbeeld dat je zelf aanhaalt:
sys.stdout and sys.stderr

The stdout and stderr streams are displayed as text in the output area.
Je zou de std out zelf op kunnen vangen en je eigen handler oid. er aan hangen die html output die ook in je iPython notebook komt te staan.

Python:
1
2
import sys
sys.stdout = open('file', 'w') # file vervangen door iets anders


Maar het lijkt me een beetje overkill voor dit probleem ;) Verder is iPython toch wel heel fijn voor sommige klusjes als je wat moet experimenteren.