بسیاری از اوقات پیش میآید که خروجی یک بلوک کد بسیار طولانی است. به صورت طبیعی، هنگامی که پردازش به صورت دستهای و در کنسول صورت میگیرد، چنین خروجیهایی معمولا در یک فایل ذخیره میشوند، اما در مورد IPython Notebook وضعیت کمی متفاوت است! در این وضع تمایل داریم خروجی را در ذیل بلوک کد ببینیم!
اما مشکل جایی آغاز میشود که خروجی بسیار طولانی است و این گونه فایلها در مرورگر وب بارگذاری میشوند. برای من بسیار پیش آمده است که بارگذاری یک فایل منجر به هنگ و در نهایت کرش کردن مرورگر شود. به همین دلیل پاک کردن خروجیها قبل از بازکردن فایل، راهکار مناسبی به نظر میرسد. بدین منظور کافی است در همان مسیر یک Notebook جدید را باز کرده و قطعه کد ذیل را در آن اجرا کنیم! فایلی هم نام با فایل مورد نظر که عبارت _removed به انتهای آن اضافه شده است، در همان مسیر تولید شده که شامل محتویات فایل مزبور منهای خروجی ها است. این راهکار از اینجا برداشته شده است.
import sys
import io
import os
from IPython.nbformat.current import read, write
def remove_outputs(nb):
"""remove the outputs from a notebook"""
for ws in nb.worksheets:
for cell in ws.cells:
if cell.cell_type == 'code':
cell.outputs = []
fname = "اسم فایل مورد نظر.ipynb"
with io.open(fname, 'r') as f:
nb = read(f, 'json')
remove_outputs(nb)
base, ext = os.path.splitext(fname)
new_ipynb = "%s_removed%s" % (base, ext)
with io.open(new_ipynb, 'w', encoding='utf8') as f:
write(nb, f, 'json')
print "wrote %s" % new_ipynb