how to save the output of a cell in iPython notebo

2019-02-09 09:13发布

问题:

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.

回答1:

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)