Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to save the output of a cell in iPython notebook?

I would like to be able to save the TEXT output of an iPython notebook cell into a file on disk.

I have 2 additional requirements/requests:

  • be able to re-run the cell and overwrite my output with whatever the latest is.
  • also display the output within the notebook.

I have figured out how to use the %%capture magic for some basic saving of an iPython notebook's cell into a file, but it does not seem flexible enough: it keeps appending every time I re-run the cell and I cannot get it to display within the same cell.

Here is what I have so far:

%%capture cap --no-stderr print 'stuff' with open('output.txt', 'w') as f:     f.write(cap.stdout)  # clear the cap by deleting the variable here? # del cap  

When I try to put cap.show() after the write, it does not seem to display. Instead, it puts the output into the cap variable twice.

like image 793
pocketfullofcheese Avatar asked Jan 16 '15 22:01

pocketfullofcheese


People also ask

How do you save in Ipython notebook?

From within a console session you can save, using %save some or all of your work to one or more python files that you can then paste, import, etc, into notebook cells. You can also save using %save -r to .


1 Answers

You have a typo, missing d in cap.stout. It should be cap.stdout I tested the following and it worked fine. cap.show() also printed "stuff" and re-running the cell overwrote the file.

%%capture cap --no-stderr print 'stuff' with open('output.txt', 'w') as f:     f.write(cap.stdout) 
like image 52
Amit Verma Avatar answered Oct 08 '22 01:10

Amit Verma