如何用nbconvert导出Jupyter Notebook时隐藏命令输出单元格?
解决nbconvert导出时命令日志出现在文件末尾的问题
你遇到的这个日志其实是在Notebook里运行!jupyter nbconvert魔法命令时,命令本身的输出被当成了Notebook的输出单元格保存下来,最后导出时就被包含进去了。下面给几个实用的解决办法:
方法1:直接在终端/命令行执行nbconvert命令
别在Notebook里用魔法命令跑,打开系统终端(Windows命令提示符/PowerShell、Linux/macOS终端),直接输入命令:
# 导出PDF jupyter nbconvert --to pdf --no-input grmd4203.ipynb # 导出HTML jupyter nbconvert --to html --no-input grmd4203.ipynb
这样命令的日志只会在终端里显示,不会被写入Notebook的输出单元格,导出的文件自然就不会有这部分内容。
方法2:在Notebook里重定向命令输出到空设备
如果一定要在Notebook里执行命令,可以把命令的标准输出和错误输出都重定向到空设备,避免生成输出单元格:
- Linux/macOS系统:
!jupyter nbconvert --to pdf --no-input grmd4203.ipynb > /dev/null 2>&1 !jupyter nbconvert --to html --no-input grmd4203.ipynb > /dev/null 2>&1
- Windows系统:
!jupyter nbconvert --to pdf --no-input grmd4203.ipynb > NUL 2>&1 !jupyter nbconvert --to html --no-input grmd4203.ipynb > NUL 2>&1
这里> /dev/null(或> NUL)是把标准输出扔到空设备,2>&1是把错误输出也重定向到和标准输出一样的地方,这样命令执行的所有日志都不会留在Notebook里。
方法3:手动清理输出单元格
如果已经生成了包含日志的输出单元格,可以在Notebook里选中该单元格,点击菜单栏的「Cell」→「Current Outputs」→「Clear」清空输出,之后再执行导出命令。不过这种方法是手动操作,适合临时处理。
内容的提问来源于stack exchange,提问作者George Cheng
相关产品推荐
相关产品推荐

