问题
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)
来源:https://stackoverflow.com/questions/27994137/how-to-save-the-output-of-a-cell-in-ipython-notebook